Monday, 15 March 2010

java - Verify PKCS 7 with key from file fails -


  CMSSignedData s = 

नया CMSSignedData (नया CMSProcessableByteArray (toVerifyBytes), हस्ताक्षरित बाइट); स्टोर प्रमाणपत्र = s.getCertificates (); SignerInformationStore साइनर्स = s.getSignerInfos (); संग्रह c = signers.getSigners (); इटरेटर यह = सीटरेटर (); जबकि (यह hasNext ()) {SignerInformation signer = (SignerInformation) it.next (); संग्रह प्रमाणन संकलन = प्रमाणपत्रस्टेट। मेटमैट्स (signer.getSID ()); Iterator certIt = certCollection.iterator (); X509 प्रमाणपत्रहोल्डर प्रमाण = (X509 प्रमाणपत्रपत्रक) certIt.next (); यदि (signer.verify (नया JCSimpleSignerInfoVerifierBuilder ()। SetProvider ("BC")। Build (cert))) {System.out.println ("सत्यापित सत्यापित"); }}

यह पूरी तरह से कार्य करता है और हस्ताक्षर ठीक से सत्यापित है।

लेकिन - तब मैं विंडोज़ में एक p7b फ़ाइल के रूप में पीकेसीएस 7 हस्ताक्षर तत्व को बचाता है, इसे विंडोज में खोलता है , और दो प्रमाण पत्र को .cer-files में निकालने और डिस्क पर संग्रहीत करने के लिए विंडोज कार्यक्षमता का उपयोग करें।

फ़ाइल इस तरह दिखता है:
  FileInputStream fis = new FileInputStream ( "C: \\ पथ \\ pubkey.cer"); सर्टिफिकेट फासिफ़िक सीएफ = सर्टिफिकेट फाट्री। गेट इंस्टेंस ("X.50 9"); X509 प्रमाणपत्र प्रमाणपत्र = (X509 प्रमाणपत्र) cf.generateCertificates (fis) .iterator ()। Next (); fis.close (); CMSSignedData s = नया CMSSignedData (नया CMSProcessableByteArray (toVerifyBytes), हस्ताक्षरित बाइट); SignerInformationStore साइनर्स = s.getSignerInfos (); संग्रह c = signers.getSigners (); इटरेटर यह = सीटरेटर (); जबकि (यह hasNext ()) {System.out.println (cert.getPublicKey ()); SignerInformation signerInfo = (SignerInformation) it.next (); यदि (signerInfo.verify (नया JCSimpleSignerInfoVerifierBuilder ()। SetProvider ("BC")। Build (cert.getPublicKey ())) {System.out.println ("सत्यापित सत्यापित"); } Else {System.out.println ("नहीं ठीक Verged"); }}  

यह सत्यापन हमेशा विफल रहता है। क्या कारण हो सकता है? क्या प्रमुख निर्यात कुछ करना है? फाइल से लोड करते समय क्या मैं गलत ऑब्जेक्ट का उपयोग कर रहा हूं?

यदि मैं प्रमाण पत्र को कोड में (। ToString ()) प्रिंट करता हूं तो उम्मीद के अनुसार कुंजी शो।


No comments:

Post a Comment