Чтобы подписать строки с помощью встроенных символов новой строки (AWS, я говорю с вами!), Вам нужно сделать следующее (на примере AWS S3)
pre {
raw_string = uri:unescape("GET%0A%0A%0AWed, 28 Mar 2007 01:29:59 +0000%0A/");
sample_key = "uV3F3YluFJax1cknvbcGwgjvx4QpvB+leU8dUj2o";
signature = math:hmac_sha1_base64(raw_string, sample_key);
expected = "Db+gepJSUbZKwpx1FR0DLtEYoZA=";
passfail = (signature eq expected) => "pass" | "fail";
}
Функция uri:decode()
возвращает строку с соответствующими символами новой строки, а \n\n\n
- нет. Возможно, вам придется добавить завершающий '=' к подписи.