Ich habe versucht, viele Lösungen im Internet zu finden, aber es hat nicht funktioniert. Ich muss ein PDF signieren, indem ich den Hash aus dem PDF extrahiere und ihn an einen anderen Serverdienst sende, um den Hash zu signieren und ihn wieder in die PDF-Signatur einzufügen. Bitte helfen Sie mir! Das Folgende ist mein Code, wobei der DataSigner eine Drittanbieter-Dienst-API ist, um den Server aufzurufen, um den Hash zu signieren:
Das signierte PDF ist https://drive.google.com/file/d/1cyMetO ... sp=sharing
Ich habe versucht, viele Lösungen im Internet zu finden, aber es hat nicht funktioniert. Ich muss ein PDF signieren, indem ich den Hash aus dem PDF extrahiere und ihn an einen anderen Serverdienst sende, um den Hash zu signieren und ihn wieder in die PDF-Signatur einzufügen. Bitte helfen Sie mir! Das Folgende ist mein Code, wobei der DataSigner eine Drittanbieter-Dienst-API ist, um den Server aufzurufen, um den Hash zu signieren: Das signierte PDF ist https://drive.google.com/file/d/1cyMetOqlT6_sNQv86a6JIG-qF-TalGi9/view?usp=sharing [code] public class CreateSignature1 {
final DataSigner signer; private Certificate cert; private Certificate[] certificateChain;
public CreateSignature1(DataSigner signer) { this.signer = signer; }
/** * Signs the given PDF file. * * @param inFile the original PDF file */ public void signDocument(File inFile, Certificate cert, Certificate[] certChain) throws IOException, CertificateEncodingException, NoSuchAlgorithmException, OperatorCreationException, CMSException {
this.cert = cert;
// we're being given the certificate chain with public key setCertificateChain(certChain);
String name = inFile.getName(); String substring = name.substring(0, name.lastIndexOf('.'));
// retrieve signer certificate and its chain //X509Certificate cert = (X509Certificate) certificateChain[0];
// build signed attribute table generator and SignerInfo generator builder ESSCertIDv2 certid = new ESSCertIDv2( new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha256), MessageDigest.getInstance("SHA-256").digest(cert.getEncoded()) ); SigningCertificateV2 sigcert = new SigningCertificateV2(certid); Attribute attr = new Attribute(PKCSObjectIdentifiers.id_aa_signingCertificateV2, new DERSet(sigcert));
ASN1EncodableVector v = new ASN1EncodableVector(); v.add(attr); AttributeTable atttributeTable = new AttributeTable(v); CMSAttributeTableGenerator attrGen = new DefaultSignedAttributeTableGenerator(atttributeTable);
return signedHash.get(0); } catch (Exception e) { throw new RuntimeException("Exception while signing", e); } }
@Override public OutputStream getOutputStream() { return stream; }
@Override public AlgorithmIdentifier getAlgorithmIdentifier() { return new AlgorithmIdentifier(new ASN1ObjectIdentifier("1.2.840.113549.1.1.11")); } };
// create the SignedData generator and execute CMSSignedDataGenerator gen = new CMSSignedDataGenerator(); gen.addCertificates(new JcaCertStore(Arrays.asList(certificateChain))); gen.addSignerInfoGenerator(sigb.build(contentSigner, new X509CertificateHolder(cert2)));
CMSTypedData msg = new CMSProcessableInputStream(externalSigning.getContent()); CMSSignedData signedData = gen.generate(msg, false);
Ich habe versucht, viele Lösungen im Internet zu finden, aber es hat nicht funktioniert. Ich muss ein PDF signieren, indem ich den Hash aus dem PDF extrahiere und ihn an einen anderen Serverdienst...
Ich verwende das Paket .NET azure.storage.Blobs in einer Azure -Funktion, um Blobs zu schreiben. Der Pfad ist dynamisch, daher verwende ich die Binder -Funktionalität. Ich biete auch Metadaten mit...
Ich versuche PDF -Datei zu erstellen von Base64 String. Aufgrund des -Speicher Update in Android 11 muss ich meinen Code ändern, aber ich erhalte einen Fehler in Android 11 -Geräten:...
Ich versuche PDF -Datei zu erstellen von Base64 String. Aufgrund des -Speicher Update in Android 11 muss ich meinen Code ändern, aber ich erhalte einen Fehler in Android 11 -Geräten:...
Caused by: org.postgresql.util.PSQLException: ERROR: column columnName is of type text[] but expression is of type character varying
Hint: You will need to rewrite or cast the expression.
Position:...