/** Entry point to tor-gencert */ int main(int argc, char **argv) { int r = 1; init_logging(1); /* Don't bother using acceleration. */ if (crypto_global_init(0, NULL, NULL)) { fprintf(stderr, "Couldn't initialize crypto library.\n"); return 1; } if (crypto_seed_rng()) { fprintf(stderr, "Couldn't seed RNG.\n"); goto done; } /* Make sure that files are made private. */ umask(0077); if (parse_commandline(argc, argv)) goto done; if (load_identity_key()) goto done; if (reuse_signing_key) { if (load_signing_key()) goto done; } else { if (generate_signing_key()) goto done; } if (generate_certificate()) goto done; r = 0; done: clear_passphrase(); if (identity_key) EVP_PKEY_free(identity_key); if (signing_key) EVP_PKEY_free(signing_key); tor_free(address); tor_free(identity_key_file); tor_free(signing_key_file); tor_free(certificate_file); tor_free(address); crypto_global_cleanup(); return r; }
/* handle a setup_signing message */ void GCS_MAVLINK::handle_setup_signing(const mavlink_message_t *msg) { // decode mavlink_setup_signing_t packet; mavlink_msg_setup_signing_decode(msg, &packet); struct SigningKey key; key.magic = SIGNING_KEY_MAGIC; key.timestamp = packet.initial_timestamp; memcpy(key.secret_key, packet.secret_key, 32); if (!signing_key_save(key)) { hal.console->printf("Failed to save signing key"); return; } // activate it immediately load_signing_key(); }