0

我正在尝试使用 PKCS11 库对 xml 文件进行签名,但在尝试签名时出现了一些错误。这是我的代码,我指出了异常行。ComputeSignature 方法返回异常,我很困惑。

...
                ObjectHandle publicKey = null;
                ObjectHandle privateKey = null;

                List<ObjectAttribute> publicKeyAttributes = new List<ObjectAttribute>();
                publicKeyAttributes.Add(new ObjectAttribute(CKA.CKA_TOKEN, true));
                publicKeyAttributes.Add(new ObjectAttribute(CKA.CKA_LABEL, "label"));
                session.FindObjectsInit(publicKeyAttributes);
                List<ObjectHandle> oObjCollection = session.FindObjects(1);

                List<ObjectHandle> foundPublicKeys = session.FindAllObjects(publicKeyAttributes);

                List<ObjectAttribute> objectAttributess = session.GetAttributeValue(foundPublicKeys[0], new List<CKA>() { CKA.CKA_ID, CKA.CKA_LABEL, CKA.CKA_VALUE });
                byte[] ckaIdd = objectAttributess[0].GetValueAsByteArray();
                string ckaLabel = objectAttributess[1].GetValueAsString();
                byte[] ckaValue = objectAttributess[2].GetValueAsByteArray();
                var _rawData = ckaValue ?? throw new ArgumentNullException(nameof(ckaValue));
                var _parsedCertificate = new X509Certificate2(_rawData);

                Cer c = new Cer();

                var Key = c.GetRSAPublicKey(_parsedCertificate);

                XmlDocument doc = new XmlDocument();
                doc.Load(@"C:\Users\MyUser\Desktop\SampleFile.xml");

                SignedXml signedXml = new SignedXml(doc);

                signedXml.SigningKey = Key;

                Reference reference = new Reference();
                reference.Uri = "";

                XmlDsigEnvelopedSignatureTransform env = new XmlDsigEnvelopedSignatureTransform();
                reference.AddTransform(env);

                signedXml.AddReference(reference);

                signedXml.ComputeSignature(); // Error occurs in this line

}} 

signedXml.ComputeSignature() 方法发生 System.NotSupportedException

如何使用从 HSM 设备获得的密钥对 xml 文件进行签名?

4

0 回答 0