2013-01-21 4 views
1

나는 이것을 찾으려고했지만 아직 답을 찾지 못했습니다.디지털 인증서를 매개 변수로 전달하고 서명을 사용하여 로컬로 저장하지 않을 수 있습니까?

디지털 인증서를 사용하여 서명하려면 인증서 저장소에 있어야합니다.

그러나 디지털 인증서를 메서드 매개 변수로 전달할 수 있으며 문서에 서명하려면 사용하고 어떤 방식 으로든 로컬에 저장하지 않을 수 있습니까?

나는 이것을 C++이나 C#에서 할 것이다.

+0

CryptoAPI를 사용하면 메모리 내 저장소 (.NET Framework에서 허용하거나 P/Invoke를 사용해야하는지 확실하지 않음)를 만들어이 작업을 수행 할 수 있습니다. 또는 BouncyCastle 또는 SecureBlackbox와 같은 타사 라이브러리를 사용하여 작업을 수행 할 수 있습니다 (특히 고급 서명이 필요한 경우). –

답변

0

X509Certificate2 클래스의 다양한 생성자를 사용하여 파일 또는 바이트 배열에서 인증서를 만들 수 있습니다. 예컨대 :

string certFile = @"MyCert.pfx"; 
string pfxPassword = "password"; // never hard code password in code 

X509Certificate2 certificate = new X509Certificate2(certFile, pfxPassword, 
    X509KeyStorageFlags.MachineKeySet); 
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)certificate.PrivateKey; 

그런 다음 How to: Sign XML Documents with Digital Signatures 같이 서명을위한 암호화 서비스 공급자를 사용할 수 있습니다.

이제 "어떤 식 으로든 로컬에 저장하지 않습니까?" 음, 전적으로. 인증서는 이 아니고은 저장되지만 개인 키 은 Microsoft 암호화 API 암호화 서비스 공급자 키 데이터베이스에 저장된입니다.