公钥的读取
+ (NSString*)convertASN1_BIT_STRINGToPublicKeyString:(X509 *)x509 {
ASN1_BIT_STRING *bitstr = X509_get0_pubkey_bitstr(x509);
NSString *publicKeyString = [NSString string];
for (int i = 0; i < bitstr->length; i++) {
NSString *hexString = [NSString stringWithFormat:@"%02x", bitstr->data[i]];
publicKeyString = [publicKeyString stringByAppendingString:hexString];
}
return publicKeyString;
}
验签
// pubKey 公钥 signDer密文 uid jsonStr明文
+ (BOOL)verifyWithPublicKey:(NSString *)pubKey signDer:(NSString *)signDer uid:(NSString *)uid jsonStr:(NSString *)jsonStr{
BOOL isOK = NO; // 验签结果
NSString * plaintext = [NSString dealWithCodeJson:jsonStr];
NSString *sign = [OpenSSLSM2 decodeWithDer:signDer];
NSString *realUserid = [self dealWithSubName:uid json:jsonStr];
if (plaintext.length>0&&sign.length>0&&realUserid.length>0)
{
isOK = [OpenSSLSM2 verify:plaintext signRS:sign pubKey:pubKey uid:realUserid];
}
return isOK;
}
git 地址
网友评论