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());