verify_ed25519

Function verify_ed25519 

Source
pub fn verify_ed25519(
    init_data: &str,
    public_key: &[u8; 32],
) -> Result<(), ValidationError>
Expand description

Validates the signature parameter of the init data using Ed25519.

The init_data string must include a signature parameter encoded in Base64. All other parameters are combined into the data check string according to Telegram’s specification and verified against the provided Ed25519 public key.

§Errors

Returns ValidationError if parsing fails or the signature does not verify.

§Examples

use ed25519_dalek::{Signer, SigningKey};
use telegram_webapp_sdk::validate_init_data::verify_ed25519;

// generate test key
let sk = SigningKey::from_bytes(&[1u8; 32]);
let pk = sk.verifying_key();
let message = "a=1\nb=2";
let sig = sk.sign(message.as_bytes());
let init_data = format!("a=1&b=2&signature={}", base64::encode(sig.to_bytes()));
assert!(verify_ed25519(&init_data, pk.as_bytes()).is_ok());