gpt4 book ai didi

iphone - 在 iOS 上使用 RSA-SHA1 的 OAuth 签名

转载 作者:可可西里 更新时间:2023-11-01 05:01:32 33 4
gpt4 key购买 nike

我需要帮助创建 RSA-SHA1 签名以用于 iOS 上的三足 OAuth 实现。

我能够通过使用 CommonCrypto.h 的 HMAC-SHA1 来做到这一点,但这个库似乎不支持 RSA-SHA1。

你们中有人用 RSA 实现了 OAuth 签名吗?你能给我一些资源,我可以从中找到更多信息吗?

谢谢。

最佳答案

The answer by Erik Villegas也是我的解决方案。但是我在使用这个解决方案时遇到的发布代码中有一个错误:secretFile 是用 fopen() 打开的,所以它必须用 fclose( )

- (NSString *)RSASHA1HashForString:(NSString *)source {

NSLog(@"encrypting %@", source);

if (source == nil) return nil;

OpenSSL_add_all_algorithms();

NSString *signature = nil;

// make a SHA-1 digest of the source string
const char* sourceChars = [source UTF8String];

unsigned char digest[SHA_DIGEST_LENGTH];
SHA1((const unsigned char *)sourceChars, strlen(sourceChars), digest);

NSString *path = [[NSBundle mainBundle] pathForResource:@"privatekey" ofType:@"pem"];

const char *pathCString = [path cStringUsingEncoding:NSUTF8StringEncoding];
FILE *secretFile = fopen(pathCString, "r");

RSA *rsa = NULL;
PEM_read_RSAPrivateKey(secretFile, &rsa, NULL, NULL);


if (rsa != NULL) {

unsigned int sigLen = 0;
unsigned char *sigBuff = malloc(RSA_size(rsa));

int result = RSA_sign(NID_sha1, digest, (unsigned int) sizeof(digest),
sigBuff, &sigLen, rsa);

if (result != 0) {
NSData *sigData = [NSData dataWithBytes:sigBuff length:sigLen];
signature = [self base64forData:sigData];
}

free(sigBuff);

RSA_free(rsa);
}

fclose(secretFile);

NSLog(@"generated signature: %@", signature);

return signature;
}

关于iphone - 在 iOS 上使用 RSA-SHA1 的 OAuth 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197771/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com