Bu sayfanın seçili sürümü ile mevcut sürümü arasındaki farkları gösterir.
esya:cmszarf:sifreleme [2013/08/28 08:36] Beytullah Yiğit |
esya:cmszarf:sifreleme [2013/09/12 07:47] (mevcut) Murat Yasin Kubilay |
||
---|---|---|---|
Satır 1: | Satır 1: | ||
===== Veri Şifreleme ===== | ===== Veri Şifreleme ===== | ||
+ | |||
Bir veriyi şifrelemek için ''CmsEnvelopeGenerator'' veya ''CmsEnvelopeStreamGenerator'' sınıfları kullanılmalıdır. Büyük verilerin şifrelenmesi için ''CmsEnvelopeStreamGenerator'' sınıfı kullanılmalıdır. ''CmsEnvelopeGenerator'' sınıfı, bellek üzerindeki bir veriyi şifrelediginden, şifreleyebilecegi dosyanın boyutu JRE'nin bellek sınırı kadardır. | Bir veriyi şifrelemek için ''CmsEnvelopeGenerator'' veya ''CmsEnvelopeStreamGenerator'' sınıfları kullanılmalıdır. Büyük verilerin şifrelenmesi için ''CmsEnvelopeStreamGenerator'' sınıfı kullanılmalıdır. ''CmsEnvelopeGenerator'' sınıfı, bellek üzerindeki bir veriyi şifrelediginden, şifreleyebilecegi dosyanın boyutu JRE'nin bellek sınırı kadardır. | ||
+ | |||
Bir doküman bir kişiye veya daha fazla kişiye şifrelenebilir. Eğer şifrelenmis dokümanının şifresi çözülebiliyorsa, bu dokümana yeni alıcılar eklenebilir. Sifreli veri göndermek için, verinin gönderileceği kişi veya kişilerin sertifikalarının elimizde olması gerekmektedir. | Bir doküman bir kişiye veya daha fazla kişiye şifrelenebilir. Eğer şifrelenmis dokümanının şifresi çözülebiliyorsa, bu dokümana yeni alıcılar eklenebilir. Sifreli veri göndermek için, verinin gönderileceği kişi veya kişilerin sertifikalarının elimizde olması gerekmektedir. | ||
- | <sxh java;title:Java> | ||
- | CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream ); | ||
- | cmsGenerator.addRecipientInfos(new ECertificate [] {cert}); | ||
- | cmsGenerator.generate(encryptedOutputStream); | ||
- | </sxh> | ||
- | <sxh csharp;title:C#> | ||
- | CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream ); | ||
- | cmsGenerator.addRecipientInfos(new ECertificate [] {cert}); | ||
- | cmsGenerator.generate(encryptedOutputStream); | ||
- | </sxh> | ||
+ | <sxh java;title:Java> CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream ); cmsGenerator.addRecipientInfos(new ECertificate [] {cert}); cmsGenerator.generate(encryptedOutputStream); </sxh> <sxh csharp;title:C#> CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream ); cmsGenerator.addRecipientInfos(new ECertificate [] {cert}); cmsGenerator.generate(encryptedOutputStream); </sxh> | ||
==== Şifreli Verinin Çözülmesi ==== | ==== Şifreli Verinin Çözülmesi ==== | ||
+ | |||
Şifreli verinin çözülmesi için ''CmsEnvelopeParser'' veya ''CmsEnvelopeStreamParser'' sınıfı kullanılmalıdır. Büyük şifreli verilerin çözülmesi için ''CmsEnvelopeStreamParser'' sınıfı kullanılmalıdır. | Şifreli verinin çözülmesi için ''CmsEnvelopeParser'' veya ''CmsEnvelopeStreamParser'' sınıfı kullanılmalıdır. Büyük şifreli verilerin çözülmesi için ''CmsEnvelopeStreamParser'' sınıfı kullanılmalıdır. | ||
- | Şifrelenmis verinin çözülmesi için hangi sertifika için şifrelenmis ise o sertifika ve o sertifikaya ait sifre çözücünün elimizde olması gerekmektedir. Sifre çözücü olarak akıllı kart veya bellek kullanılabilir. | ||
- | Aşağıda akıllı kart ile şifreli veriyi çözen örnek kod bloğu verilmistir. | ||
- | <sxh java;title:Java> | + | Şifrelenmis verinin çözülmesi için hangi sertifika için şifrelenmis ise o sertifika ve o sertifikaya ait sifre çözücünün elimizde olması gerekmektedir. Sifre çözücü olarak akıllı kart veya bellek kullanılabilir. Aşağıda akıllı kart ile şifreli veriyi çözen örnek kod bloğu verilmistir. |
- | ByteArrayOutputStream decryptedOutputStream = new ByteArrayOutputStream(); | + | |
- | + | ||
- | SmartCard sc = new SmartCard(CardType.AKIS); | + | |
- | long slot = sc.getSlotList()[0]; | + | |
- | long session = sc.openSession(slot); | + | |
- | sc.login(session, "12345"); | + | |
- | + | ||
- | CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(encryptedInputStream); | + | |
- | IDecryptorStore decryptor = new SCDecryptor(sc, session); | + | |
- | cmsParser.open(decryptedOutputStream, decryptor); | + | |
- | </sxh> | + | |
- | <sxh csharp;title:C#> | + | |
- | MemoryStream decryptedOutputStream = new MemoryStream(); | + | |
- | SmartCard sc = new SmartCard(CardType.AKIS); | ||
- | long slot = sc.getSlotList()[0]; | ||
- | long session = sc.openSession(slot); | ||
- | sc.login(session, "12345"); | ||
- | CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(encryptedInputStream); | + | <sxh java;title:Java> ByteArrayOutputStream decryptedOutputStream = new ByteArrayOutputStream(); |
- | IDecryptorStore decryptor = new SCDecryptor(sc, session); | + | |
- | cmsParser.open(decryptedOutputStream, decryptor); | + | |
- | </sxh> | + | |
+ | |||
+ | SmartCard sc = new SmartCard(CardType.AKIS); long slot = sc.getSlotList()[0]; long session = sc.openSession(slot); sc.login(session, "12345"); | ||
+ | |||
+ | |||
+ | CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(encryptedInputStream); IDecryptorStore decryptor = new SCDecryptor(sc, session); cmsParser.open(decryptedOutputStream, decryptor); </sxh> <sxh csharp;title:C#> MemoryStream decryptedOutputStream = new MemoryStream(); | ||
+ | |||
+ | |||
+ | SmartCard sc = new SmartCard(CardType.AKIS); long slot = sc.getSlotList()[0]; long session = sc.openSession(slot); sc.login(session, "12345"); | ||
+ | |||
+ | |||
+ | CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(encryptedInputStream); IDecryptorStore decryptor = new SCDecryptor(sc, session); cmsParser.open(decryptedOutputStream, decryptor); </sxh> | ||
==== Şifrelenmiş Veriye Alıcı Ekleme ==== | ==== Şifrelenmiş Veriye Alıcı Ekleme ==== | ||
+ | |||
Şifreli veri olustururken, kim için şifreleme yapılacaksa, o kisinin şifreleme sertifikasının elimizde olması gerekmektedir. Bunun için kullanılabilecek yöntemlerden bir tanesi, dizin sisteminden e-posta adresiyle kullanıcı sertifikasının bulunmasıdır. | Şifreli veri olustururken, kim için şifreleme yapılacaksa, o kisinin şifreleme sertifikasının elimizde olması gerekmektedir. Bunun için kullanılabilecek yöntemlerden bir tanesi, dizin sisteminden e-posta adresiyle kullanıcı sertifikasının bulunmasıdır. | ||
- | + | ||
- | Dizin sistemi işlemleri ESYA API kütüphanesinde ESYA API Infra projesinde bulunmaktadır. Bu proje için " ma3api-infra-....jar"ını edinmeniz gerekmektedir. | + | |
- | + | Dizin sistemi işlemleri ESYA API kütüphanesinde ESYA API Infra projesinde bulunmaktadır. Bu proje için " ma3api-infra-….jar"ını edinmeniz gerekmektedir. | |
+ | |||
Aşağıdaki örnek kod bizim test sistemimizde e-posta adresinden sertifikayı bulan örnek koddur. Kodu kullanırken kendi sisteminize göre uyarlamanız gerekmektedir. | Aşağıdaki örnek kod bizim test sistemimizde e-posta adresinden sertifikayı bulan örnek koddur. Kodu kullanırken kendi sisteminize göre uyarlamanız gerekmektedir. | ||
- | <sxh java;title:Java> | + | |
- | public void testGettingCertificateFromLDAP() throws Exception | + | <sxh java;title:Java> public void testGettingCertificateFromLDAP() throws Exception { ECertificate originalCert=new ECertificate(ugCert.getBytes("ASCII")); ECertificate adcert=readEncCertificatesFromDirectory("yasemin.akturk@ug.net")[0]; } public static ECertificate [] readEncCertificatesFromDirectory(String aEmail) throws ESYAException{ |
+ | <code> | ||
+ | String ip = "111.111.110.15"; | ||
+ | int port = 389; | ||
+ | String directoryType = DirectoryBase.ACTIVE_DIRECTORY; | ||
+ | String user = "esyakm@xx.net"; | ||
+ | String pass = "UXXX010"; | ||
+ | String searchPoint = "dc=ug, dc=net"; | ||
+ | |||
+ | DirectoryInfo di = new StaticDirectoryInfo(ip,port,directoryType,user,pass); | ||
+ | SearchDirectory search = new SearchDirectory(di, searchPoint); | ||
+ | |||
+ | if(search.isConnected() == false) | ||
{ | { | ||
- | ECertificate originalCert=new ECertificate(ugCert.getBytes("ASCII")); | + | System.out.println("Dizine baglanamadi!"); |
- | ECertificate adcert=readEncCertificatesFromDirectory("yasemin.akturk@ug.net")[0]; | + | return null; |
} | } | ||
- | public static ECertificate [] readEncCertificatesFromDirectory(String aEmail) throws ESYAException{ | + | |
- | String ip = "10.1.0.15"; | + | String tka = search.getTKAbyEmail(aEmail); |
- | int port = 389; | + | Object[][] objs = search.getAttributes(tka, DirectoryBase.ATTR_KULLANICISERTIFIKASI); |
- | String directoryType = DirectoryBase.ACTIVE_DIRECTORY; | + | if(objs == null) |
- | String user = "esyakm@ug.net"; | + | { |
- | String pass = "Ugnet.2010"; | + | System.out.println("kullanici sertifikasi yok 1."); |
- | String searchPoint = "dc=ug, dc=net"; | + | return null; |
- | + | ||
- | DirectoryInfo di = new StaticDirectoryInfo(ip,port,directoryType,user,pass); | + | |
- | SearchDirectory search = new SearchDirectory(di, searchPoint); | + | |
- | + | ||
- | if(search.isConnected() == false) | + | |
- | { | + | |
- | System.out.println("Dizine baglanamadi!"); | + | |
- | return null; | + | |
- | } | + | |
- | + | ||
- | String tka = search.getTKAbyEmail(aEmail); | + | |
- | Object[][] objs = search.getAttributes(tka, DirectoryBase.ATTR_KULLANICISERTIFIKASI); | + | |
- | if(objs == null) | + | |
- | { | + | |
- | System.out.println("kullanici sertifikasi yok 1."); | + | |
- | return null; | + | |
- | } | + | |
- | Object[] certs = objs[0]; | + | |
- | if(certs == null) | + | |
- | { | + | |
- | System.out.println("kullanici sertifikasi yok 2."); | + | |
- | return null; | + | |
- | } | + | |
- | List<ECertificate> encCerts = new ArrayList<ECertificate>(); | + | |
- | for (int i = 0; i < certs.length; i++) | + | |
- | { | + | |
- | byte [] certBytes = (byte[]) certs[i]; | + | |
- | + | ||
- | ECertificate cert = new ECertificate(certBytes); | + | |
- | EKeyUsage keyUsage = cert.getExtensions().getKeyUsage(); | + | |
- | + | ||
- | if(keyUsage.isDataEncipherment() || keyUsage.isKeyEncipherment()) | + | |
- | { | + | |
- | encCerts.add(cert); | + | |
- | } | + | |
- | } | + | |
- | return encCerts.toArray(new ECertificate[0]); | + | |
} | } | ||
- | </sxh> | + | Object[] certs = objs[0]; |
- | <sxh csharp;title:C#> | + | if(certs == null) |
- | public void testGettingCertificateFromLDAP() | + | |
{ | { | ||
- | ECertificate originalCert = new ECertificate(ugCert); | + | System.out.println("kullanici sertifikasi yok 2."); |
- | ECertificate adcert=readEncCertificatesFromDirectory("yasemin.akturk@ug.net")[0]; | + | return null; |
} | } | ||
- | public static ECertificate[] readEncCertificatesFromDirectory(String aEmail) | + | List<ECertificate> encCerts = new ArrayList<ECertificate>(); |
+ | for (int i = 0; i <certs.length; i++) | ||
{ | { | ||
- | String ip = "10.1.0.15"; | + | byte [] certBytes = (byte[]) certs[i]; |
- | int port = 389; | + | </code> |
- | String directoryType = DirectoryBase.ACTIVE_DIRECTORY; | + | |
- | String user = "esyakm@ug.net"; | + | |
- | String pass = "Ugnet.2010"; | + | |
- | String searchPoint = "dc=ug, dc=net"; | ||
- | DirectoryInfo di = new StaticDirectoryInfo(ip, port, directoryType, user, pass); | ||
- | SearchDirectory search = new SearchDirectory(di, searchPoint); | + | <code> |
+ | ECertificate cert = new ECertificate(certBytes); | ||
+ | EKeyUsage keyUsage = cert.getExtensions().getKeyUsage(); | ||
+ | |||
+ | if(keyUsage.isDataEncipherment() || keyUsage.isKeyEncipherment()) | ||
+ | { | ||
+ | encCerts.add(cert); | ||
+ | } | ||
+ | } | ||
+ | return encCerts.toArray(new ECertificate[0]); | ||
+ | </code> | ||
- | String tka = search.getTKAbyEmail(aEmail); | ||
- | Object[][] objs = search.getAttributes(tka, DirectoryBase.ATTR_KULLANICISERTIFIKASI); | ||
- | if (objs == null) | + | } </sxh> <sxh csharp;title:C#> public void testGettingCertificateFromLDAP() { ECertificate originalCert = new ECertificate(ugCert); ECertificate adcert=readEncCertificatesFromDirectory("yasemin@XX.net")[0]; } public static ECertificate[] readEncCertificatesFromDirectory(String aEmail) { |
- | { | + | <code> |
- | Console.WriteLine("kullanici sertifikasi yok 1."); | + | String ip = "111.111.110.15"; |
- | return null; | + | int port = 389; |
- | } | + | String directoryType = DirectoryBase.ACTIVE_DIRECTORY; |
- | Object[] certs = objs[0]; | + | String user = "esya@XX.net"; |
- | if (certs == null) | + | String pass = "UgXXXX10"; |
- | { | + | </code> |
- | Console.WriteLine("kullanici sertifikasi yok 2."); | + | |
- | return null; | + | |
- | } | + | |
- | List<ECertificate> encCerts = new List<ECertificate>(); | ||
- | for (int i = 0; i < certs.Length; i++) | ||
- | { | ||
- | byte[] certBytes = (byte[])certs[i]; | ||
- | ECertificate cert = new ECertificate(certBytes); | + | <code> |
- | EKeyUsage keyUsage = cert.getExtensions().getKeyUsage(); | + | String searchPoint = "dc=ug, dc=net"; |
+ | DirectoryInfo di = new StaticDirectoryInfo(ip, port, directoryType, user, pass); | ||
+ | </code> | ||
- | if (keyUsage.isDataEncipherment() || keyUsage.isKeyEncipherment()) | ||
- | { | ||
- | Console.WriteLine("sifreleme sertifikasidir"); | ||
- | encCerts.Add(cert); | ||
- | } | ||
- | } | ||
- | return encCerts.ToArray(); | + | <code> |
- | } | + | SearchDirectory search = new SearchDirectory(di, searchPoint); |
- | </sxh> | + | </code> |
+ | |||
+ | <code> | ||
+ | String tka = search.getTKAbyEmail(aEmail); | ||
+ | Object[][] objs = search.getAttributes(tka, DirectoryBase.ATTR_KULLANICISERTIFIKASI); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code> | ||
+ | if (objs == null) | ||
+ | { | ||
+ | Console.WriteLine("kullanici sertifikasi yok 1."); | ||
+ | return null; | ||
+ | } | ||
+ | Object[] certs = objs[0]; | ||
+ | if (certs == null) | ||
+ | { | ||
+ | Console.WriteLine("kullanici sertifikasi yok 2."); | ||
+ | return null; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code> | ||
+ | List<ECertificate> encCerts = new List<ECertificate>(); | ||
+ | for (int i = 0; i <certs.Length; i++) | ||
+ | { | ||
+ | byte[] certBytes = (byte[])certs[i]; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code> | ||
+ | ECertificate cert = new ECertificate(certBytes); | ||
+ | EKeyUsage keyUsage = cert.getExtensions().getKeyUsage(); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code> | ||
+ | if (keyUsage.isDataEncipherment() || keyUsage.isKeyEncipherment()) | ||
+ | { | ||
+ | Console.WriteLine("sifreleme sertifikasidir"); | ||
+ | encCerts.Add(cert); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code> | ||
+ | return encCerts.ToArray(); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | } </sxh> | ||
==== Şifrelenmiş Veriye Yeni Alıcı Ekleme ==== | ==== Şifrelenmiş Veriye Yeni Alıcı Ekleme ==== | ||
+ | |||
Şifrelenmis veriye yeni alıcılar eklenebilir. Bunun için şifreli dokümanın hepsini çözmeye gerek yoktur. Sadece dokümanın şifrelendigi simetrik anahtarı elde edip, yeni alıcı için bu simetrik anahtarı şifreleyip dokümana eklemek gerekmektedir. Simetrik anahtarı elde edebilmek için kütüphaneye bir çözücü verilmelidir. Simetrik anahtarı elde etme islemi dokümanın çözülmesi gibi uzun sürmez. | Şifrelenmis veriye yeni alıcılar eklenebilir. Bunun için şifreli dokümanın hepsini çözmeye gerek yoktur. Sadece dokümanın şifrelendigi simetrik anahtarı elde edip, yeni alıcı için bu simetrik anahtarı şifreleyip dokümana eklemek gerekmektedir. Simetrik anahtarı elde edebilmek için kütüphaneye bir çözücü verilmelidir. Simetrik anahtarı elde etme islemi dokümanın çözülmesi gibi uzun sürmez. | ||
- | <sxh java;title:Java> | + | |
- | //Add first recipient | + | <sxh java;title:Java> //Add first recipient InputStream plainInputStream = new ByteArrayInputStream("test".getBytes()); ByteArrayOutputStream envelopeWithOneRecipient = new ByteArrayOutputStream(); ECertificate cert = new ECertificate(ugCert.getBytes("ASCII")); CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream ); cmsGenerator.addRecipientInfos(new ECertificate [] {cert}); cmsGenerator.generate(envelopeWithOneRecipient); // CMS Envelope with one recipient is generated. |
- | InputStream plainInputStream = new ByteArrayInputStream("test".getBytes()); | + | <code> |
- | ByteArrayOutputStream envelopeWithOneRecipient = new ByteArrayOutputStream(); | + | |
- | ECertificate cert = new ECertificate(ugCert.getBytes("ASCII")); | + | //Add a new recipient to envelope |
- | + | </code> | |
- | CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream ); | + | |
- | cmsGenerator.addRecipientInfos(new ECertificate [] {cert}); | + | |
+ | ByteArrayInputStream bais = new ByteArrayInputStream(envelopeWithOneRecipient.toByteArray()); ByteArrayOutputStream envelopeWithTwoRecipient = new ByteArrayOutputStream(); | ||
+ | |||
+ | |||
+ | SmartCard sc = new SmartCard(CardType.AKIS); long slot = sc.getSlotList()[0]; long session = sc.openSession(slot); sc.login(session, "12345"); | ||
+ | |||
+ | |||
+ | CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(bais); IDecryptorStore decryptor = new SCDecryptor(sc, session); cmsParser.addRecipientInfo(envelopeWithTwoRecipient, decryptor, cert); </sxh> <sxh csharp;title:C#> //Add first recipient using (Stream plainInputStream = new MemoryStream(ASCIIEncoding.ASCII.GetBytes("test")), envelopeWithOneRecipient = new MemoryStream()) { // MemoryStream envelopeWithOneRecipient = new MemoryStream(); | ||
+ | <code> | ||
+ | ECertificate cert = new ECertificate(ugCert); | ||
+ | </code> | ||
+ | |||
+ | |||
+ | <code> | ||
+ | CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream); | ||
+ | cmsGenerator.addRecipientInfos(new ECertificate[] { cert }); | ||
cmsGenerator.generate(envelopeWithOneRecipient); | cmsGenerator.generate(envelopeWithOneRecipient); | ||
- | //CMS Envelope with one recipient is generated. | + | //CMS Envelope with one recipient is generated. |
- | + | </code> | |
- | //Add a new recipient to envelope | + | |
- | ByteArrayInputStream bais = new ByteArrayInputStream(envelopeWithOneRecipient.toByteArray()); | + | |
- | ByteArrayOutputStream envelopeWithTwoRecipient = new ByteArrayOutputStream(); | + | <code> |
- | + | //Add a new recipient to envelope | |
- | SmartCard sc = new SmartCard(CardType.AKIS); | + | using (MemoryStream bais = new MemoryStream(((MemoryStream)envelopeWithOneRecipient).ToArray()), envelopeWithTwoRecipient = new MemoryStream()) |
- | long slot = sc.getSlotList()[0]; | + | |
- | long session = sc.openSession(slot); | + | |
- | sc.login(session, "12345"); | + | |
- | + | ||
- | CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(bais); | + | |
- | IDecryptorStore decryptor = new SCDecryptor(sc, session); | + | |
- | cmsParser.addRecipientInfo(envelopeWithTwoRecipient, decryptor, cert); | + | |
- | </sxh> | + | |
- | <sxh csharp;title:C#> | + | |
- | //Add first recipient | + | |
- | using (Stream plainInputStream = new MemoryStream(ASCIIEncoding.ASCII.GetBytes("test")), envelopeWithOneRecipient = new MemoryStream()) | + | |
{ | { | ||
- | //MemoryStream envelopeWithOneRecipient = new MemoryStream(); | + | //MemoryStream envelopeWithTwoRecipient = new MemoryStream(); |
- | ECertificate cert = new ECertificate(ugCert); | + | </code> |
- | CmsEnvelopeStreamGenerator cmsGenerator = new CmsEnvelopeStreamGenerator(plainInputStream); | ||
- | cmsGenerator.addRecipientInfos(new ECertificate[] { cert }); | ||
- | cmsGenerator.generate(envelopeWithOneRecipient); | ||
- | //CMS Envelope with one recipient is generated. | ||
- | //Add a new recipient to envelope | + | <code> |
- | using (MemoryStream bais = new MemoryStream(((MemoryStream)envelopeWithOneRecipient).ToArray()), envelopeWithTwoRecipient = new MemoryStream()) | + | SmartCard sc = new SmartCard(CardType.AKIS); |
- | { | + | long slot = sc.getSlotList()[0]; |
- | //MemoryStream envelopeWithTwoRecipient = new MemoryStream(); | + | long session = sc.openSession(slot); |
+ | sc.login(session, "12345"); | ||
+ | </code> | ||
- | SmartCard sc = new SmartCard(CardType.AKIS); | ||
- | long slot = sc.getSlotList()[0]; | ||
- | long session = sc.openSession(slot); | ||
- | sc.login(session, "12345"); | ||
- | CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(bais); | + | <code> |
- | IDecryptorStore decryptor = new SCDecryptor(sc, session); | + | CmsEnvelopeStreamParser cmsParser = new CmsEnvelopeStreamParser(bais); |
- | cmsParser.addRecipientInfo(envelopeWithTwoRecipient, decryptor, cert); | + | IDecryptorStore decryptor = new SCDecryptor(sc, session); |
+ | cmsParser.addRecipientInfo(envelopeWithTwoRecipient, decryptor, cert); | ||
+ | </code> | ||
- | sc.logout(session); | + | |
- | } | + | <code> |
+ | sc.logout(session); | ||
} | } | ||
- | </sxh> | + | </code> |
+ | |||
+ | |||
+ | } </sxh> |