ece_webpush_aesgcm_headers_extract_params uses a hand-rolled state machine parser. Parsing strings in C is scary, and Crypto-Key and Encryption are deprecated, anyway. It's better to use a higher-level language like Rust or Swift to extract the params, and pass them to ece_webpush_aes128gcm_decrypt.