Java Code Examples for org.bouncycastle.asn1.ocsp.OCSPObjectIdentifiers#id_pkix_ocsp_nonce()
The following examples show how to use
org.bouncycastle.asn1.ocsp.OCSPObjectIdentifiers#id_pkix_ocsp_nonce() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: OcspRequestBuilder.java From netty-4.1.22 with Apache License 2.0 | 6 votes |
/** * ATTENTION: The returned {@link OCSPReq} is not re-usable/cacheable! It contains a one-time nonce * and CA's will (should) reject subsequent requests that have the same nonce value. */ public OCSPReq build() throws OCSPException, IOException, CertificateEncodingException { SecureRandom generator = checkNotNull(this.generator, "generator"); DigestCalculator calculator = checkNotNull(this.calculator, "calculator"); X509Certificate certificate = checkNotNull(this.certificate, "certificate"); X509Certificate issuer = checkNotNull(this.issuer, "issuer"); BigInteger serial = certificate.getSerialNumber(); CertificateID certId = new CertificateID(calculator, new X509CertificateHolder(issuer.getEncoded()), serial); OCSPReqBuilder builder = new OCSPReqBuilder(); builder.addRequest(certId); byte[] nonce = new byte[8]; generator.nextBytes(nonce); Extension[] extensions = new Extension[] { new Extension(OCSPObjectIdentifiers.id_pkix_ocsp_nonce, false, new DEROctetString(nonce)) }; builder.setRequestExtensions(new Extensions(extensions)); return builder.build(); }
Example 2
Source File: OcspClientBouncyCastle.java From itext2 with GNU Lesser General Public License v3.0 | 6 votes |
/** * Generates an OCSP request using BouncyCastle. * @param issuerCert certificate of the issues * @param serialNumber serial number * @return an OCSP request * @throws OCSPException * @throws IOException */ private static OCSPReq generateOCSPRequest(X509Certificate issuerCert, BigInteger serialNumber) throws OCSPException, IOException, OperatorException, CertificateEncodingException { //Add provider BC Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); JcaDigestCalculatorProviderBuilder digestCalculatorProviderBuilder = new JcaDigestCalculatorProviderBuilder(); DigestCalculatorProvider digestCalculatorProvider = digestCalculatorProviderBuilder.build(); DigestCalculator digestCalculator = digestCalculatorProvider.get(CertificateID.HASH_SHA1); // Generate the id for the certificate we are looking for CertificateID id = new CertificateID(digestCalculator, new JcaX509CertificateHolder(issuerCert), serialNumber); // basic request generation with nonce OCSPReqBuilder gen = new OCSPReqBuilder(); gen.addRequest(id); // create details for nonce extension Extension ext = new Extension(OCSPObjectIdentifiers.id_pkix_ocsp_nonce, false, new DEROctetString(new DEROctetString(PdfEncryption.createDocumentId()).getEncoded())); gen.setRequestExtensions(new Extensions(new Extension[]{ext})); return gen.build(); }
Example 3
Source File: OnlineOCSPSource.java From dss with GNU Lesser General Public License v2.1 | 6 votes |
private byte[] buildOCSPRequest(final CertificateID certId, BigInteger nonce) throws DSSException { try { final OCSPReqBuilder ocspReqBuilder = new OCSPReqBuilder(); ocspReqBuilder.addRequest(certId); /* * The nonce extension is used to bind a request to a response to * prevent replay attacks. RFC 6960 (OCSP) section 4.1.2 such * extensions SHOULD NOT be flagged as critical */ if (nonce != null) { DEROctetString encodedNonceValue = new DEROctetString( new DEROctetString(nonce.toByteArray()).getEncoded()); Extension extension = new Extension(OCSPObjectIdentifiers.id_pkix_ocsp_nonce, false, encodedNonceValue); Extensions extensions = new Extensions(extension); ocspReqBuilder.setRequestExtensions(extensions); } final OCSPReq ocspReq = ocspReqBuilder.build(); final byte[] ocspReqData = ocspReq.getEncoded(); return ocspReqData; } catch (OCSPException | IOException e) { throw new DSSException("Cannot build OCSP Request", e); } }
Example 4
Source File: OCSPFuncTest.java From ph-commons with Apache License 2.0 | 5 votes |
@Nonnull public static OCSPReq generateOCSPRequest (final X509Certificate aIssuerCert, final BigInteger aCheckSerialNumber) throws OCSPException { try { final DigestCalculatorProvider aDigestCalculatorProvider = new JcaDigestCalculatorProviderBuilder ().setProvider (PBCProvider.getProvider ()) .build (); final DigestCalculator aDigestCalculator = aDigestCalculatorProvider.get (CertificateID.HASH_SHA1); // CertID structure is used to uniquely identify certificates that are the // subject of an OCSP request or response and has an ASN.1 definition. // CertID structure is defined in RFC 2560 final CertificateID aCertificateID = new JcaCertificateID (aDigestCalculator, aIssuerCert, aCheckSerialNumber); // create details for nonce extension. The nonce extension is used to bind // a request to a response to prevent replay attacks. As the name implies, // the nonce value is something that the client should only use once // within a reasonably small period. final BigInteger aNonce = BigInteger.valueOf (System.nanoTime ()); // to create the request Extension final Extensions aExtensions = new Extensions (new Extension (OCSPObjectIdentifiers.id_pkix_ocsp_nonce, false, new DEROctetString (aNonce.toByteArray ()))); // basic request generation with nonce final OCSPReqBuilder aBuilder = new OCSPReqBuilder (); aBuilder.addRequest (aCertificateID); // Extension to the whole request aBuilder.setRequestExtensions (aExtensions); return aBuilder.build (); } catch (final OperatorCreationException | CertificateEncodingException ex) { throw new IllegalStateException (ex); } }