| 
	Статус: Новичок
 Группы: Участники
Зарегистрирован: 10.10.2011(UTC)
 Сообщений: 6
 Откуда: Kazan
 
 | 
            
		      
                Здравствуйте всем. Понимаю что вопрос из разряда легких, но никак не могу разобраться в нем. Вобщем с помощью шарпея подписываю и шифрую текстовый файл. Далее отправляю его клиенту. Тот пытается открыть его в КРиптоАРме. Но это не удается. Ошибка - Отстутсвие личного сертификата. Хотя тот сертификат с помощью которого я шифрую у них есть. Тогда мне предложили решение - нужно вложить сертификат получателя. Еще один факт. КОгда один и тот же файл шифрую и подписываю свой программой, пробую просто открыть его в Крипто АРме - там смотрю список сертификатов - указан только тот которым я шифрую это понятно. А когда тот же файл подписываю и шифрую с помощью самого крипто арма - то сертификатов намного больше. Как мне программно добавить туда нужные сертификаты?  прилагаю кусок кода который шифрует. И не до конца пойму как можно в это сообщение вложить еще какие то сертификаты. Код:
                        {
                        X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
			store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
            
			X509Certificate2Collection collection = store.Certificates.Find(X509FindType.FindBySubjectName, signerName, true);
			X509Certificate2 cert = collection[0];
                        filename = Sign(filename, cert);
			Encrypt(filename, cert);
                        }
                private static string Sign(string filename, X509Certificate2 cert)
		{
			byte[] data = ReadFile(filename);
			ContentInfo contentInfo = new ContentInfo(data);
			SignedCms signedCms = new SignedCms(contentInfo);
			CmsSigner cmsSigner = new CmsSigner(cert);
			signedCms.ComputeSignature(cmsSigner, false);
			byte[] signed = signedCms.Encode();
			Console.WriteLine("Signed bytes size: {0}", signed.Length);
			string signedStr = Convert.ToBase64String(signed);
			string signedFilename = filename + ".sig";
			File.WriteAllBytes(signedFilename, Encoding.UTF8.GetBytes(signedStr));
			return signedFilename;
		}
		private static void Encrypt(string filename, X509Certificate2 cert)
		{
			byte[] data = ReadFile(filename);
			ContentInfo content = new ContentInfo(data);
			EnvelopedCms envelopedCms = new EnvelopedCms(content);
			CmsRecipient recip1 = new CmsRecipient(
				SubjectIdentifierType.IssuerAndSerialNumber, cert);
			envelopedCms.Encrypt(recip1);
			byte[] envelopedbytes = envelopedCms.Encode();
			string envelopedBytesStr = Convert.ToBase64String(envelopedbytes);
			string encryptedFilename = filename + ".enc";
			File.WriteAllBytes(encryptedFilename, Encoding.UTF8.GetBytes(envelopedBytesStr));
		}
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close