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

使用Ed25519给数据签名(oc版),第1张

         //==============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

基点:构成零件轮廓的不同几何素线的交点或切点称为基点。

节点:当采用不具备非圆曲线插补功能的数控机床加工非圆曲线轮廓时,在加工程序的编制中,常常需要用多个直线段或圆弧段去近似地代替非圆曲线,这称为拟合,拟合线段的交点或切点称为节点。

podman是一个可以替代docker的容器技术。特色功能之一,就是可以在Mac或者Windows上面,通过ssh协议,远程连接到linux 上面,操作远程的podman。你用起来,就跟本地的podman一样的。比你在mac或者windows下面,跑虚拟机,要好很多。

但是配置起来,需要一点点耐心。

你先要准备好ssh的key,避免不必要的麻烦,我们直接得用 ssh key id_ed25519

首先远程linux服务器,你得先装podman, 我们以opensuse tumbleweed为例,你需要执行这样的命令安装,并配置podman

sshd也是必须要启用的,不然你无法以sshd协议链接linux 服务器。

systemctl enable sshd

记住,你得生成,或者自己准备ssh的 key, 以id_ed25519格式为佳。

保证可以通过ssh -v root@目标机器ip登录远程服务器

然后接下来你执行命令,在mac或者windows下面,利用podman的远程链接功能,链接到远程podman服务器。

podman --log-level=debug system connection add wsk -d --identity /Users/nomore/.ssh/id_ed25519 ssh://root@172.30.1.112

查看连接信息

$ podman system connection ls

Name URI Identity Default

wsk ssh://root@172.30.1.112:22/run/podman/podman.sock /Users/nomore/.ssh/id_ed25519 true

然后看下版本信息

接下来我们运行一个容器试试

如果我们在远程linux服务器上执行命令,应该可以看得到刚刚我们运行的容器实例

当你完成这个简单的实例之后,你会发现,你已经初步掌握了podman 如何链接远程linux服务器。

这样你可以在本地开发代码,开发完了,可以利用远程linux,构建容器镜像

比如我的电脑是mac,我先clone一个很小的仓库,,尝试构建镜像

我们分别在mac和远程linux看看我们的镜像是否构建成功了

到这里,容器的运行,镜像构建,这些基本操作,你都已经掌握了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/1210.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-01-29
下一篇2023-01-29

发表评论

登录后才能评论

评论列表(0条)

    保存