序言:我正在尝试在NativeScript插件中创建一个椭圆曲线密钥对(因此我不得不使用Objective-C )进行签名和验证。
首先,我想说下面呈现的状态是很多尝试以不同方式进行的结果(不幸的是,我坐了好几天),我不仅考虑了这种方法。在这个项目的开始,我只是按照Apple文档,并认为我将很容易成功。多么不相信。
我的要求:为了保持简单,我想将私钥存储在Keychain中(Secure Enclave将是下一步),并在SecKeyCopyPublicKey
之后通过SecItemCopyMatching
计算公钥我通过SecKeyCreateRandomKey
检索了密钥,如Apple docs中所述。
现状:此模型最初来自here。我从来没有使用SecKeyGeneratePair
,因此我尝试使用const privAttr: NSMutableDictionary<string, any> = NSMutableDictionary.new<string, any>();
privAttr.setObjectForKey("my.tag.sign.private", kSecAttrApplicationTag);
privAttr.setObjectForKey(kCFBooleanTrue, kSecAttrIsPermanent);
const pubAttr: NSMutableDictionary<string, any> = NSMutableDictionary.new<string, any>();
pubAttr.setObjectForKey("my.tag.sign.public", kSecAttrApplicationTag);
pubAttr.setObjectForKey(kCFBooleanTrue, kSecAttrIsPermanent);
const param: NSMutableDictionary<string, any> = NSMutableDictionary.new<string, any>();
param.setObjectForKey(kSecAttrKeyTypeECSECPrimeRandom, kSecAttrKeyType);
param.setObjectForKey(256, kSecAttrKeySizeInBits);
param.setObjectForKey(privAttr, kSecPrivateKeyAttrs);
param.setObjectForKey(pubAttr, kSecPublicKeyAttrs);
let pubKeyRef = new interop.Reference<any>();
let privKeyRef = new interop.Reference<any>();
const status = SecKeyGeneratePair(param, pubKeyRef, privKeyRef);
atm。我目前实施的内容如下:
SecKeyCopyPublicKey
目前我收到错误-50。根据{{3}},这意味着我的给定参数在某些时候无效。我不知道究竟是什么问题。
我的问题:如何生成密钥对,其中至少私钥被隐含地存储在钥匙串中,之后我成功通过A
检索公钥。
感谢任何有价值的提示和帮助。
大胆地,大卫