2010-08-18 12 views
5

मैं एक फ़ाइल में हस्ताक्षर समय विशेषता जोड़ने की कोशिश कर रहा हूं जिसे मैं साइनड सीएमएस का उपयोग कर हस्ताक्षर कर रहा हूं।पीकेसीएस 7 हस्ताक्षर किए गए सीएमएस में साइनिंग समय जोड़ें?

private byte[] signFile(byte[] fileContent, X509Certificate2 verificationCert) 
{ 
    ContentInfo contentInfo = new ContentInfo(fileContent); 

    SignedCms signedCMS = new SignedCms(contentInfo); 

    CmsSigner cmsSigner = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, verificationCert); 

    Oid signedDate = new Oid("1.2.840.113549.1.9.5"); //oid for PKCS #9 signing time 

    signedDate.Value = DateTime.Now.ToString(); 

    CryptographicAttributeObject cryptoAtty = new CryptographicAttributeObject(signedDate); 

    cmsSigner.SignedAttributes.Add(cryptoAtty); 

    signedCMS.ComputeSignature(cmsSigner, false); 

    byte[] encoded = signedCMS.Encode(); 

    return encoded; 
} 

त्रुटि एनकोड पर फेंक दिया:

CryptographicException: The object identifier is poorly formatted. 

कैसे ठीक पर हस्ताक्षर करने के समय को जोड़ने के लिए पर कोई भी विचार? मुझे लगता है कि मुझे हस्ताक्षर समय को एएसएन .1 एन्कोडेड ऑब्जेक्ट में कनवर्ट करना पड़ सकता है और इसे cryptoAtty के मानों में जोड़ना पड़ सकता है। एक तिथि/समय को एएसएन .1 एनकोडेड ऑब्जेक्ट में कैसे परिवर्तित करेगा?

उत्तर

10

alt text

खैर कि आसान था।

cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime()); 
संबंधित मुद्दे