Interaction.php 564 B

12345678910111213141516171819
  1. <?php
  2. namespace Discord;
  3. use RuntimeException;
  4. class Interaction {
  5. public static function verifyKey($rawBody, $signature, $timestamp, $client_public_key) {
  6. if (! class_exists('\Elliptic\EdDSA')) {
  7. throw new RuntimeException('The `simplito/elliptic-php` package is required to validate interactions.');
  8. }
  9. $ec = new \Elliptic\EdDSA('ed25519');
  10. $key = $ec->keyFromPublic($client_public_key, 'hex');
  11. $message = array_merge(unpack('C*', $timestamp), unpack('C*', $rawBody));
  12. return $key->verify($message, $signature) == TRUE;
  13. }
  14. }