public static string FindSigningCertificateId(PkcsSession session, string certificateLabel)
        {
            var certificateHandle = session.Session
                                    .FindAllObjects(new List <ObjectAttribute> {
                new ObjectAttribute(CKA.CKA_LABEL, certificateLabel)
            })
                                    .FirstOrDefault();

            var certificateObject = session.Session.GetAttributeValue(certificateHandle, new List <CKA> {
                CKA.CKA_ID
            }).First();
            var idInDecimal = certificateObject.GetValueAsByteArray()[0];

            return(idInDecimal.ToString("X"));
        }
        public static X509Certificate2 FindSigningCertificate(PkcsSession session, string certificateLabel)
        {
            var certificateHandle = session.Session
                                    .FindAllObjects(new List <ObjectAttribute> {
                new ObjectAttribute(CKA.CKA_LABEL, certificateLabel)
            })
                                    .FirstOrDefault();

            if (certificateHandle == null)
            {
                throw new InvalidOperationException("Certificate with specified label wasn't found: " + certificateLabel);
            }

            var certificateObject = session.Session.GetAttributeValue(certificateHandle, new List <CKA> {
                CKA.CKA_VALUE
            }).First();

            var rawCertificate = certificateObject.GetValueAsByteArray();

            return(ParseCertificate(rawCertificate));
        }