setName('talk:signaling:verify-keys')
->setDescription('Verify if the stored public key matches the stored private key for the signaling server')
->addOption('update', null, InputOption::VALUE_NONE, 'Updates the stored public key to match the private key if there is a mis-match');
}
protected function execute(InputInterface $input, OutputInterface $output): int {
$update = $input->getOption('update');
$alg = $this->talkConfig->getSignalingTokenAlgorithm();
$privateKey = $this->talkConfig->getSignalingTokenPrivateKey();
$publicKey = $this->talkConfig->getSignalingTokenPublicKey();
$publicKeyDerived = $this->talkConfig->deriveSignalingTokenPublicKey($privateKey, $alg);
$output->writeln('Stored public key:');
$output->writeln($publicKey);
$output->writeln('Derived public key:');
$output->writeln($publicKeyDerived);
if ($publicKey != $publicKeyDerived) {
if ($update) {
$output->writeln('Stored public key for algorithm ' . strtolower($alg) . ' did not match stored private key.');
$output->writeln('A new public key was created and stored.');
$this->config->setAppValue('spreed', 'signaling_token_pubkey_' . strtolower($alg), $publicKeyDerived);
return 0;
}
$output->writeln('Stored public key for algorithm ' . strtolower($alg) . ' does not match stored private key');
return 1;
}
$output->writeln('Stored public key for algorithm ' . strtolower($alg) . ' matches stored private key');
return 0;
}
}