См. https://medium.com/@nikjohn/speed-up-google-maps-and-everything-else-with-async-defer-7b9814efb2b .
Проблема в том, что ваш файл js не загружается асинхронно, поэтому он выполняется до того, как скрипт Google Maps будет завершен.
Вам необходимо включить функцию обратного вызова, которую google
может вызывать после завершения загрузки.
Вы видели новые классы Дженса Альфке MyCrypto ?
У него есть несколько Пример кода в своем блоге .
Вот как вы генерируете HMAC с использованием SHA-256:
NSString *key;
NSString *data;
const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
length:sizeof(cHMAC)];
NSString *hash = [HMAC base64Encoding];
Мне не известна библиотека HOTP, но алгоритм был довольно прост, если я правильно помню.