美文网首页
使用Ed25519给数据签名(oc版)

使用Ed25519给数据签名(oc版)

作者: 冬的天 | 来源:发表于2019-01-09 14:35 被阅读0次

    ed25519文件夹下的文件都是GitHub上ed25519(c版)的c文件,上面的BlinkEd25519.h,BlinkEd25519.m个人封装的接口文件。

    文件列表介绍

    //==============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对象,保存一对密钥串

     */

    +(Ed25519Keypair*)generateEd25519KeyPair;

    /**

     签名数据

     @param ed25519keypair 密钥串

     @param content 需要签名的数据(json格式的字符串)

     @return 签名后的数据

     */

    +(NSData*)BLinkEd25519_Signature:(Ed25519Keypair*)ed25519keypair Content:(NSString*)content;

    /**

     验证签名数据

     @param signatureData 签名数据

     @param contentData 签名前数据

     @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

    相关文章

      网友评论

          本文标题:使用Ed25519给数据签名(oc版)

          本文链接:https://www.haomeiwen.com/subject/yatgrqtx.html