===== Çözücüler =====
Kullanılacak çözücülerin ''IDecryptorStore'' arayüzünden türemiş olmaları gerekmektedir. ''IDecryptorStore'' arayüzünün iki metodu bulunmaktadır. ''getEncryptionCertificates()'' metodu çözücünün çözebilecegi sertifikaları verir. ''decrypt(...)'' metoduna, hangi sertifika ile şifre çözme yapılması isteniyorsa o sertifika ve çözülmek istenen veri parametre olarak verilir. Metot çözülmüs veriyi geri döner. Bu arayüze uyacak şekilde kendi çözücünüzü de yazabilirsiniz.
CMS Envelope kütüphanesinde akıllı kart, bellek ve Microsoft sertifika deposu üzerinde çözme işlemlerini yapan çözücüler hali hazırda bulunmaktadır.
==== Akıllı Kart Çözücü ====
Akıllı kart ile çözme işlemleri için ''SCDecryptor'' sınıfı kullanılmalıdır. Bu sınıf akıllı kart işlemlerini yapacağı SmartCard nesnesini ve oturum numarasını parametre olarak alır. Verinin akıllı kart ile çözülebilmesi için akıllı karta giris (login) yapılması gerekmektedir.
Akıllı kart islemleri hakkında daha genis bilgi almak için [[esya:smartcard:akıllı-kart|ESYA API SmartCard Kullanım Kılavuzuna]] bakınız.
Asağıdaki örnekte bir akıllı kart çözücü oluşturulmaktadır.
ByteArrayOutputStream decryptedOutputStream = new ByteArrayOutputStream();
SmartCard sc = new SmartCard(CardType.AKIS);
long slot = sc.getSlotList()[0];
long session = sc.openSession(slot);
sc.login(session, "123456");
IDecryptorStore decryptor = new SCDecryptor(sc, session);
MemoryStream decryptedOutputStream = new MemoryStream();
SmartCard sc = new SmartCard(CardType.AKIS);
long slot = sc.getSlotList()[0];
long session = sc.openSession(slot);
sc.login(session, "12345");
IDecryptorStore decryptor = new SCDecryptor(sc, session);
==== Bellekte Çözücü ====
Eğer sertifika ve özel anahtara ulaşılabiliniyorsa, şifrelenmis dosyalar bellekte de çözülebilir. Bu işlem için ''MemoryDecryptor'' sınıfı kullanılmalıdır. Nesne yaratılırken sertifika ve özel anahtar çiftleri parametre olarak geçilir.
ECertificate cert = getCertificate();
PrivateKey key = getPrivKey();
MemoryDecryptor md = new MemoryDecryptor(new Pair(cert,key));
ECertificate cert = getCertificate();
IPrivateKey key = getPrivKey();
MemoryDecryptor md = new MemoryDecryptor(new Pair(cert,key));
==== Microsoft Sertifika Deposundan Çözücü ====
Microsoft sertifika deposundaki anahtar kullanılarak şifreli veri çözülmeye çalısılır. Herhangi bir parametreye ihtiyaç duymaz. Yalnız kullanıcının sertifika deposuna erisim hakkı olması gerekmektedir.