ed25519文件夾下的文件都是GitHub上ed25519(c版)的c文件,上面的BlinkEd25519.h,BlinkEd25519.m個(gè)人封裝的接口文件给赞。
? ? ? ? ?//==============BlinkEd25519.h===========//
? ? ? ?#import ?<Foundation/Foundation.h>
#include "Ed25519.h"
@interfaceEd25519Keypair :NSObject
@property (nonatomic,strong) NSData *publickey;//公鑰32位
@property (nonatomic,strong) NSData *privatekey;//私鑰64位
@end
NS_ASSUME_NONNULL_BEGIN
@interfaceBlinkEd25519 :NSObject
/**
?生成ed25519密鑰串
?@return Ed25519Keypair對(duì)象,保存一對(duì)密鑰串
?*/
+(Ed25519Keypair*)generateEd25519KeyPair;
/**
?簽名數(shù)據(jù)
?@param ed25519keypair 密鑰串
?@param content 需要簽名的數(shù)據(jù)(json格式的字符串)
?@return 簽名后的數(shù)據(jù)
?*/
+(NSData*)BLinkEd25519_Signature:(Ed25519Keypair*)ed25519keypair Content:(NSString*)content;
/**
?驗(yàn)證簽名數(shù)據(jù)
?@param signatureData 簽名數(shù)據(jù)
?@param contentData 簽名前數(shù)據(jù)
?@param ed25519keypair ed25519密鑰串
?@return 返回是否
?*/
+(BOOL)BlinkEd25519_Verify:(NSData*)signatureData content:(NSData*)contentData Ed25519Keypair:(Ed25519Keypair*)ed25519keypair;
@end
//==============BlinkEd25519.m===========//
#import "BlinkEd25519.h"
@implementation Ed25519Keypair
@end
@implementation BlinkEd25519
+(Ed25519Keypair*)generateEd25519KeyPair
{
? ? unsignedcharseed[32],publickey[32],privatekey[64];
? ? ed25519_create_seed(seed);
? ? ed25519_create_keypair(publickey, privatekey, seed);
? ? Ed25519Keypair *keypair = [[Ed25519Keypair alloc] init];
? ? keypair.publickey= [NSDatadataWithBytes:publickeylength:32];
? ? keypair.privatekey= [NSDatadataWithBytes:privatekeylength:64];
? ? returnkeypair;
}
+(NSData*)BLinkEd25519_Signature:(Ed25519Keypair*)ed25519keypair Content:(NSString*)content
{
? ? unsignedcharsignature[64];
? ? NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding];
? ? ed25519_sign(signature, [contentDatabytes], contentData.length, [ed25519keypair.publickeybytes], [ed25519keypair.privatekeybytes]);
? ? return[NSDatadataWithBytes:signaturelength:64];
}
+(BOOL)BlinkEd25519_Verify:(NSData*)signatureData content:(NSData*)contentData Ed25519Keypair:(Ed25519Keypair*)ed25519keypair
{
? ? returned25519_verify([signatureDatabytes], [contentDatabytes], contentData.length, [ed25519keypair.privatekeybytes]);
}
@end