| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/libressl/src/tls/tls_keypair.c |
| Switch to Source code | Preprocessed file |
| Line | Source | Count | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | - | |||||||||||||
| 2 | - | |||||||||||||
| 3 | - | |||||||||||||
| 4 | struct tls_keypair * | - | ||||||||||||
| 5 | tls_keypair_new(void) | - | ||||||||||||
| 6 | { | - | ||||||||||||
| 7 | return executed 8 times by 4 tests: calloc(1, sizeof(struct tls_keypair));return calloc(1, sizeof(struct tls_keypair));Executed by:
executed 8 times by 4 tests: return calloc(1, sizeof(struct tls_keypair));Executed by:
| 8 | ||||||||||||
| 8 | } | - | ||||||||||||
| 9 | - | |||||||||||||
| 10 | static int | - | ||||||||||||
| 11 | tls_keypair_pubkey_hash(struct tls_keypair *keypair, struct tls_error *error) | - | ||||||||||||
| 12 | { | - | ||||||||||||
| 13 | X509 *cert = | - | ||||||||||||
| 14 | ((void *)0) | - | ||||||||||||
| 15 | ; | - | ||||||||||||
| 16 | int rv = -1; | - | ||||||||||||
| 17 | - | |||||||||||||
| 18 | free(keypair->pubkey_hash); | - | ||||||||||||
| 19 | keypair->pubkey_hash = | - | ||||||||||||
| 20 | ((void *)0) | - | ||||||||||||
| 21 | ; | - | ||||||||||||
| 22 | - | |||||||||||||
| 23 | if (keypair->cert_mem ==
| 0-4 | ||||||||||||
| 24 | ((void *)0)
| 0-4 | ||||||||||||
| 25 | ) { | - | ||||||||||||
| 26 | rv = 0; | - | ||||||||||||
| 27 | goto never executed: done;goto done;never executed: goto done; | 0 | ||||||||||||
| 28 | } | - | ||||||||||||
| 29 | - | |||||||||||||
| 30 | if (tls_keypair_load_cert(keypair, error, &cert) == -1
| 0-4 | ||||||||||||
| 31 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 32 | if (tls_cert_pubkey_hash(cert, &keypair->pubkey_hash) == -1
| 0-4 | ||||||||||||
| 33 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 34 | - | |||||||||||||
| 35 | rv = 0; | - | ||||||||||||
| 36 | - | |||||||||||||
| 37 | err: code before this statement executed 4 times by 2 tests: err:Executed by:
| 4 | ||||||||||||
| 38 | X509_free(cert); | - | ||||||||||||
| 39 | done: code before this statement executed 4 times by 2 tests: done:Executed by:
| 4 | ||||||||||||
| 40 | return executed 4 times by 2 tests: (rv);return (rv);Executed by:
executed 4 times by 2 tests: return (rv);Executed by:
| 4 | ||||||||||||
| 41 | } | - | ||||||||||||
| 42 | - | |||||||||||||
| 43 | void | - | ||||||||||||
| 44 | tls_keypair_clear_key(struct tls_keypair *keypair) | - | ||||||||||||
| 45 | { | - | ||||||||||||
| 46 | freezero(keypair->key_mem, keypair->key_len); | - | ||||||||||||
| 47 | keypair->key_mem = | - | ||||||||||||
| 48 | ((void *)0) | - | ||||||||||||
| 49 | ; | - | ||||||||||||
| 50 | keypair->key_len = 0; | - | ||||||||||||
| 51 | } executed 13 times by 2 tests: end of blockExecuted by:
| 13 | ||||||||||||
| 52 | - | |||||||||||||
| 53 | int | - | ||||||||||||
| 54 | tls_keypair_set_cert_file(struct tls_keypair *keypair, struct tls_error *error, | - | ||||||||||||
| 55 | const char *cert_file) | - | ||||||||||||
| 56 | { | - | ||||||||||||
| 57 | if (tls_config_load_file(error, "certificate", cert_file,
| 0-3 | ||||||||||||
| 58 | &keypair->cert_mem, &keypair->cert_len) == -1
| 0-3 | ||||||||||||
| 59 | return never executed: -1;return -1;never executed: return -1; | 0 | ||||||||||||
| 60 | return executed 3 times by 2 tests: tls_keypair_pubkey_hash(keypair, error);return tls_keypair_pubkey_hash(keypair, error);Executed by:
executed 3 times by 2 tests: return tls_keypair_pubkey_hash(keypair, error);Executed by:
| 3 | ||||||||||||
| 61 | } | - | ||||||||||||
| 62 | - | |||||||||||||
| 63 | int | - | ||||||||||||
| 64 | tls_keypair_set_cert_mem(struct tls_keypair *keypair, struct tls_error *error, | - | ||||||||||||
| 65 | const uint8_t *cert, size_t len) | - | ||||||||||||
| 66 | { | - | ||||||||||||
| 67 | if (tls_set_mem(&keypair->cert_mem, &keypair->cert_len, cert, len) == -1
| 0-1 | ||||||||||||
| 68 | return never executed: -1;return -1;never executed: return -1; | 0 | ||||||||||||
| 69 | return executed 1 time by 1 test: tls_keypair_pubkey_hash(keypair, error);return tls_keypair_pubkey_hash(keypair, error);Executed by:
executed 1 time by 1 test: return tls_keypair_pubkey_hash(keypair, error);Executed by:
| 1 | ||||||||||||
| 70 | } | - | ||||||||||||
| 71 | - | |||||||||||||
| 72 | int | - | ||||||||||||
| 73 | tls_keypair_set_key_file(struct tls_keypair *keypair, struct tls_error *error, | - | ||||||||||||
| 74 | const char *key_file) | - | ||||||||||||
| 75 | { | - | ||||||||||||
| 76 | tls_keypair_clear_key(keypair); | - | ||||||||||||
| 77 | return executed 5 times by 2 tests: tls_config_load_file(error, "key", key_file,return tls_config_load_file(error, "key", key_file, &keypair->key_mem, &keypair->key_len);Executed by:
executed 5 times by 2 tests: return tls_config_load_file(error, "key", key_file, &keypair->key_mem, &keypair->key_len);Executed by:
| 5 | ||||||||||||
| 78 | &keypair->key_mem, &keypair->key_len); executed 5 times by 2 tests: return tls_config_load_file(error, "key", key_file, &keypair->key_mem, &keypair->key_len);Executed by:
| 5 | ||||||||||||
| 79 | } | - | ||||||||||||
| 80 | - | |||||||||||||
| 81 | int | - | ||||||||||||
| 82 | tls_keypair_set_key_mem(struct tls_keypair *keypair, struct tls_error *error, | - | ||||||||||||
| 83 | const uint8_t *key, size_t len) | - | ||||||||||||
| 84 | { | - | ||||||||||||
| 85 | tls_keypair_clear_key(keypair); | - | ||||||||||||
| 86 | return executed 1 time by 1 test: tls_set_mem(&keypair->key_mem, &keypair->key_len, key, len);return tls_set_mem(&keypair->key_mem, &keypair->key_len, key, len);Executed by:
executed 1 time by 1 test: return tls_set_mem(&keypair->key_mem, &keypair->key_len, key, len);Executed by:
| 1 | ||||||||||||
| 87 | } | - | ||||||||||||
| 88 | - | |||||||||||||
| 89 | int | - | ||||||||||||
| 90 | tls_keypair_set_ocsp_staple_file(struct tls_keypair *keypair, | - | ||||||||||||
| 91 | struct tls_error *error, const char *ocsp_file) | - | ||||||||||||
| 92 | { | - | ||||||||||||
| 93 | return executed 1 time by 1 test: tls_config_load_file(error, "ocsp", ocsp_file,return tls_config_load_file(error, "ocsp", ocsp_file, &keypair->ocsp_staple, &keypair->ocsp_staple_len);Executed by:
executed 1 time by 1 test: return tls_config_load_file(error, "ocsp", ocsp_file, &keypair->ocsp_staple, &keypair->ocsp_staple_len);Executed by:
| 1 | ||||||||||||
| 94 | &keypair->ocsp_staple, &keypair->ocsp_staple_len); executed 1 time by 1 test: return tls_config_load_file(error, "ocsp", ocsp_file, &keypair->ocsp_staple, &keypair->ocsp_staple_len);Executed by:
| 1 | ||||||||||||
| 95 | } | - | ||||||||||||
| 96 | - | |||||||||||||
| 97 | int | - | ||||||||||||
| 98 | tls_keypair_set_ocsp_staple_mem(struct tls_keypair *keypair, | - | ||||||||||||
| 99 | struct tls_error *error, const uint8_t *staple, size_t len) | - | ||||||||||||
| 100 | { | - | ||||||||||||
| 101 | return executed 1 time by 1 test: tls_set_mem(&keypair->ocsp_staple, &keypair->ocsp_staple_len,return tls_set_mem(&keypair->ocsp_staple, &keypair->ocsp_staple_len, staple, len);Executed by:
executed 1 time by 1 test: return tls_set_mem(&keypair->ocsp_staple, &keypair->ocsp_staple_len, staple, len);Executed by:
| 1 | ||||||||||||
| 102 | staple, len); executed 1 time by 1 test: return tls_set_mem(&keypair->ocsp_staple, &keypair->ocsp_staple_len, staple, len);Executed by:
| 1 | ||||||||||||
| 103 | } | - | ||||||||||||
| 104 | - | |||||||||||||
| 105 | void | - | ||||||||||||
| 106 | tls_keypair_free(struct tls_keypair *keypair) | - | ||||||||||||
| 107 | { | - | ||||||||||||
| 108 | if (keypair ==
| 0-5 | ||||||||||||
| 109 | ((void *)0)
| 0-5 | ||||||||||||
| 110 | ) | - | ||||||||||||
| 111 | return; never executed: return; | 0 | ||||||||||||
| 112 | - | |||||||||||||
| 113 | tls_keypair_clear_key(keypair); | - | ||||||||||||
| 114 | - | |||||||||||||
| 115 | free(keypair->cert_mem); | - | ||||||||||||
| 116 | free(keypair->ocsp_staple); | - | ||||||||||||
| 117 | free(keypair->pubkey_hash); | - | ||||||||||||
| 118 | - | |||||||||||||
| 119 | free(keypair); | - | ||||||||||||
| 120 | } executed 5 times by 2 tests: end of blockExecuted by:
| 5 | ||||||||||||
| 121 | - | |||||||||||||
| 122 | int | - | ||||||||||||
| 123 | tls_keypair_load_cert(struct tls_keypair *keypair, struct tls_error *error, | - | ||||||||||||
| 124 | X509 **cert) | - | ||||||||||||
| 125 | { | - | ||||||||||||
| 126 | char *errstr = "unknown"; | - | ||||||||||||
| 127 | BIO *cert_bio = | - | ||||||||||||
| 128 | ((void *)0) | - | ||||||||||||
| 129 | ; | - | ||||||||||||
| 130 | int ssl_err; | - | ||||||||||||
| 131 | int rv = -1; | - | ||||||||||||
| 132 | - | |||||||||||||
| 133 | X509_free(*cert); | - | ||||||||||||
| 134 | *cert = | - | ||||||||||||
| 135 | ((void *)0) | - | ||||||||||||
| 136 | ; | - | ||||||||||||
| 137 | - | |||||||||||||
| 138 | if (keypair->cert_mem ==
| 0-5 | ||||||||||||
| 139 | ((void *)0)
| 0-5 | ||||||||||||
| 140 | ) { | - | ||||||||||||
| 141 | tls_error_set(error, "keypair has no certificate"); | - | ||||||||||||
| 142 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 143 | } | - | ||||||||||||
| 144 | if ((
| 0-5 | ||||||||||||
| 145 | keypair->cert_len)) ==
| 0-5 | ||||||||||||
| 146 | ((void *)0)
| 0-5 | ||||||||||||
| 147 | ) { | - | ||||||||||||
| 148 | tls_error_set(error, "failed to create certificate bio"); | - | ||||||||||||
| 149 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 150 | } | - | ||||||||||||
| 151 | if ((*
| 0-5 | ||||||||||||
| 152 | ((void *)0)
| 0-5 | ||||||||||||
| 153 | , tls_password_cb,
| 0-5 | ||||||||||||
| 154 |
| 0-5 | ||||||||||||
| 155 | ((void *)0)
| 0-5 | ||||||||||||
| 156 | )) ==
| 0-5 | ||||||||||||
| 157 | ((void *)0)
| 0-5 | ||||||||||||
| 158 | ) { | - | ||||||||||||
| 159 | if ((
| 0 | ||||||||||||
| 160 | errstr = ERR_error_string(ssl_err, never executed: errstr = ERR_error_string(ssl_err, ((void *)0) ); | 0 | ||||||||||||
| 161 | ((void *)0) never executed: errstr = ERR_error_string(ssl_err, ((void *)0) ); | 0 | ||||||||||||
| 162 | ); never executed: errstr = ERR_error_string(ssl_err, ((void *)0) ); | 0 | ||||||||||||
| 163 | tls_error_set(error, "failed to load certificate: %s", errstr); | - | ||||||||||||
| 164 | goto never executed: err;goto err;never executed: goto err; | 0 | ||||||||||||
| 165 | } | - | ||||||||||||
| 166 | - | |||||||||||||
| 167 | rv = 0; | - | ||||||||||||
| 168 | - | |||||||||||||
| 169 | err: code before this statement executed 5 times by 2 tests: err:Executed by:
| 5 | ||||||||||||
| 170 | BIO_free(cert_bio); | - | ||||||||||||
| 171 | - | |||||||||||||
| 172 | return executed 5 times by 2 tests: (rv);return (rv);Executed by:
executed 5 times by 2 tests: return (rv);Executed by:
| 5 | ||||||||||||
| 173 | } | - | ||||||||||||
| Switch to Source code | Preprocessed file |