Подписание файла JAVA
(1 чел.) (1) гость
  • Страница:
  • 1

ТЕМА: Подписание файла JAVA

Подписание файла JAVA 1 год, 4 мес. назад #3832

  • urmnurbo
  • Осваиваюсь на форуме
  • Постов: 26
  • Репутация: 0
Добрый день. Пытаюсь подписать PDF файл.

CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
		InputStream dataLoaded = this.getClass().getResourceAsStream("/Tickets.pdf");
		byte[] data = dataLoaded.toString().getBytes();
		CMSProcessableByteArray cmsData = new CMSProcessableByteArray(data);
		Signature sig = Signature.getInstance(certToCheck.getPublicKey().getAlgorithm(), provider); // Load signature
		KeyFactory keyFact = KeyFactory.getInstance(certToCheck.getPublicKey().getAlgorithm(), provider);
		PrivateKey privateKey;
		try {
			KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) store.getEntry(alias,
					new KeyStore.PasswordProtection(password.toCharArray()));
			privateKey = pkEntry.getPrivateKey();
			try {
				sig.initSign(privateKey);
				gen.addSigner(privateKey, certToCheck, CMSSignedDataGenerator.DIGEST_SHA256);
				
				// gen.addCertificatesAndCRLs(certStore);
				try {
					String name  = provider.getName();
					CMSSignedData signed = gen.generate(cmsData, provider.getName());					
				    
				    int mst = signed.getEncoded().length;		    
			
					
					FileOutputStream fileOuputStream = new FileOutputStream("C:\\Test\\test_2.txt");
					
					
					ByteArrayOutputStream out = new ByteArrayOutputStream();
					try (ASN1InputStream asn1 = new ASN1InputStream(signed.getEncoded())) {
						DEROutputStream dos = new DEROutputStream(fileOuputStream);
						dos.writeObject(ASN1Object.fromByteArray(signed.getEncoded()));
					}
					fileOuputStream.close();
					byte[] data1 = Base64.decode(data);
					
					SignerInformationStore rr = signed.getSignerInfos();
				} catch (CMSException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			} catch (InvalidKeyException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (UnrecoverableEntryException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}



1. Правильно ли логика подписания ?
2. При получения CMSSignedData его byte.length всегда равен 698, независимо от размера pdf файла. В этом объекте CMSSignedData - хранится ли данные о pdf файле.
3. Что делать дальше с CMSSignedData, я его пытаюсб сохранить в файл, но он мне выдает закодированный файл. Какими средствами можно его декодировать. Методы?
  • Страница:
  • 1
FaLang translation system by Faboba