标签: opensc

与 pkcs11interop 一起使用的热门机制 CKM_ECDH1_DERIVE

我买了一个 NitroKey HSM,想用 EC 推导出一个秘密。 以前的问题

为此,我想使用这些CKM_ECDH1_DERIVE机制。此 HSM 支持哪个,请参阅:

参考PKCS#11 规范,必须考虑:

  1. 该机制CKM_ECDH1_DERIVE必须与功能一起使用Derive(页 188)
  2. 该机制CKM_ECDH1_DERIVE需要CK_ECDH1_DERIVE_PARAMS带有以下参数的参数(页 222):
    1. kdf:用于共享秘密值 (CKD) 的密钥派生函数
    2. sharedData : 双方共享的一些数据
    3. publicData : 对方的EC公钥值
  3. 该函数DeriveKey需要以下参数:
    1. 机制 CKM.CKM_ECDH1_DERIVE
    2. 对象句柄私钥
    3. 对象属性 (页 338)
      1. CKA.CKA_CLASS -> CKO.CKO_SECRET_KEY
      2. CKA.CKA_KEY_TYPE -> CKK.CKK_GENERIC_SECRET
      3. 但是“但是,由于这些事实都隐含在机制中,因此无需指定任何一个”,所以这些可以为空?

问题

因此,根据这些信息,我尝试实现一种方法。

但我收到此错误:

Net.Pkcs11Interop.Common.Pkcs11Exception:方法 C_DeriveKey 返回 CKR_TEMPLATE_INCOMPLETE

Session.DeriveKey

说明CKR_TEMPLATE_INCOMPLETE(第 64 页):

如果提供的模板中的属性值,连同任何默认属性值和对象创建函数本身贡献给对象的任何属性值,都不足以完全指定要创建的对象,则尝试应该失败并显示错误代码CKR_TEMPLATE_INCOMPLETE。

和这里(第 98 页)

CKR_TEMPLATE_INCOMPLETE:为创建对象指定的模板不完整,缺少一些必要的属性。有关更多信息,请参阅第 10.1 节。

但我使用了必要的属性:

  1. CKA.CKA_CLASS -> CKO.CKO_SECRET_KEY
  2. CKA.CKA_KEY_TYPE …

elliptic-curve pkcs#11 opensc nitrokey pkcs11interop

5
推荐指数
1
解决办法
1594
查看次数

在android中打开sc

软件(如Mozilla Firefox、Thunderbird)可以加载opensc模块(linux上为opensc-pkcs11.so,windows上为opensc-pkcs11.dll)并使用OpenSC支持的所有智能卡进行身份验证、签名和解密。我的问题是我们如何在 android 中做同样的事情(在哪里存储 opensc 模块,如何访问外部令牌等)。例如,应用程序如何使用 opensc 模块通过 nfc 和/或蓝牙接口访问智能卡令牌。

我不喜欢像寻找 android 那样闪烁我的 android。我请求任何建议或示例。提前致谢。

android smartcard pkcs#11 android-bluetooth opensc

5
推荐指数
0
解决办法
1392
查看次数

使用 pkcs11 模块使用公钥加密数据失败

我正在使用 Python 的 pkcs11 包来访问存储在 Yubikey 5 上的 X.509 证书。使用 pkcs11 对象访问证书、公钥和私钥工作正常,签名和签名验证也是如此。然而,对于我的一生,我无法弄清楚为什么使用公钥加密不起作用。这是我的代码:

import pkcs11
from pkcs11 import Attribute, ObjectClass, KeyType, util
lib = pkcs11.lib('/usr/lib/x86_64-linux-gnu/pkcs11/onepin-opensc-pkcs11.so')
token = lib.get_token(token_label='PIV Card Holder pin (PIV_II)'
session = token.open(user_pin=pin)
# Getting a private and a public key as pkcs11 Object
private = next(session.get_objects({
    Attribute.CLASS: ObjectClass.PRIVATE_KEY, 
}))
public = next(session.get_objects({
    Attribute.CLASS: ObjectClass.PUBLIC_KEY, 
}))
data = 'Hello, world!'
sig = private.sign(data) # Works!
sig_verif = public.verify(data, sig) # Works!
print("Signature is valid? "+str(sig_verif)) # True
# So …
Run Code Online (Sandbox Code Playgroud)

python smartcard pkcs#11 public-key-encryption opensc

4
推荐指数
1
解决办法
4573
查看次数

Openssl,engine_pkcs11,libp11/OpenSC

朋友们,我有一张智能卡,我想整合OpenSSL.计划通过OpenSSL中的"ENGINE"系统执行此操作.但是,我有一个理解的问题.有这样的事情这一事实engine_pkcs11,opensc,libp11,pkcs11-helper.有谁可以解释这种关系?首先是什么和什么编译?

写一个带有外部PKCS#11函数的库来将它连接到openssl是否足够?我必须获取库的源代码engine_pkcs11并修改它以适合我的卡?我需要这个opensc,libp11,pkcs11-helper?那么,为什么需要这些库呢?

另外,我应该注意到智能卡不支持RSA算法,它将是一个不同的算法!

真的很期待你的答案!

openssl pkcs#11 opensc

3
推荐指数
1
解决办法
5525
查看次数