Я пытаюсь реализовать токен JWT (только кодирование) в WebAssembly, цель состоит в том, чтобы иметь очень легкий модуль омов. Как веб-разработчик, мои знания C ограничены. На данный момент я реализовал следующую функцию (портированную из JS) для кодирования защищенного кодировщиком Base64 кодировщика, который отлично работает.
char _keyStr[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=";
char ret_val[200];
char* encode (char *data){
int len = strlen(data);
int i = 0;
int j = 0;
while(i<len){
char chr1 = data[i++];
int chr2Out = (i > len - 1)? 1:0;
char chr2 = data[i++];
int chr3Out = (i > len - 1)? 1:0;;
char chr3 = data[i++];
char enc1 = chr1 >> 2;
char enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
char enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
char enc4 = chr3 & 63;
if (chr2Out) {
enc3 = enc4 = 64;
} else if (chr3Out) {
enc4 = 64;
}
ret_val[j++] = _keyStr[enc1];
ret_val[j++] = _keyStr[enc2];
ret_val[j++] = _keyStr[enc3];
ret_val[j++] = _keyStr[enc4];
}
ret_val[j] = '\0';
return ret_val;
}
Моя следующая задача - подписать мою полезную нагрузку JWT с помощью HmacSHA256. Следующий скрипт JS описывает, что я хочу выполнить с помощью C. https://jsfiddle.net/gm7boy2p/813/
Я борюсь с интеграцией стороннего кода и совместим с emcc. Я ищу небольшую библиотеку или фрагмент.
Пример кода или любая помощь будут оценены.
Обновление. После дополнительных исследований, прочитав этот вопрос stackoverflow и эту статью, похоже, что использование openssl или любой другой внешней библиотеки с WebAssembly далека от тривиального. Итак, теперь я ищу автономную функцию C, которую я мог бы интегрировать в свой существующий код.