// Searchs for private key objects CryptokiCollection templatePri = new CryptokiCollection(); templatePri .Add(new ObjectAttribute(ObjectAttribute.CKA_CLASS, CryptokiObject.CKO_PRIVATE_KEY)); // Launches the search specifying the template just created CryptokiCollection priKeyObjects = session.Objects.Find(templatePri , 100);// prints the label of all keys for(int i = 0; i < priKeyObjects .count(); i++) { RSAPrivateKey privateKey = (RSAPrivateKey)priKeyObjects i; Console.WriteLine("Private Key: " + privateKey.Label); }// Searchs for public key objects CryptokiCollection templatePub = new CryptokiCollection(); templatePub .Add(new ObjectAttribute(ObjectAttribute.CKA_CLASS, CryptokiObject.CKO_PUBLIC_KEY)); // Launches the search specifying the template just created CryptokiCollection pubKeyObjects = session.Objects.Find(templatePub , 100);// prints the label of all keys for(int i = 0; i < pubKeyObjects .count(); i++) { RSAPublicKey publicKey = (RSAPublicKey )pubKeyObjectsi; Console.WriteLine("Public Key: " + publicKey.Label); }