Search in sources :

Example 6 with IssuerSerial

use of org.bouncycastle.asn1.x509.IssuerSerial in project signer by demoiselle.

the class SigningCertificateV2 method getValue.

@Override
public Attribute getValue() throws SignerException {
    try {
        X509Certificate cert = (X509Certificate) certificates[0];
        X509Certificate issuerCert = (X509Certificate) certificates[1];
        Digest digest = DigestFactory.getInstance().factoryDefault();
        digest.setAlgorithm(DigestAlgorithmEnum.SHA_256);
        byte[] certHash = digest.digest(cert.getEncoded());
        X500Name dirName = new X500Name(issuerCert.getSubjectX500Principal().getName());
        GeneralName name = new GeneralName(dirName);
        GeneralNames issuer = new GeneralNames(name);
        ASN1Integer serialNumber = new ASN1Integer(cert.getSerialNumber());
        IssuerSerial issuerSerial = new IssuerSerial(issuer, serialNumber);
        // SHA-256
        AlgorithmIdentifier algId = new AlgorithmIdentifier(NISTObjectIdentifiers.id_sha256);
        ESSCertIDv2 essCertIDv2 = new ESSCertIDv2(algId, certHash, issuerSerial);
        // return new Attribute(new ASN1ObjectIdentifier(identifier), new DERSet(new DERSequence(essCertIDv2)));
        return new Attribute(new ASN1ObjectIdentifier(identifier), new DERSet(new DERSequence(new ASN1Encodable[] { new DERSequence(essCertIDv2) })));
    } catch (CertificateEncodingException ex) {
        throw new SignerException(ex.getMessage());
    }
}
Also used : IssuerSerial(org.bouncycastle.asn1.x509.IssuerSerial) Digest(org.demoiselle.signer.cryptography.Digest) SignedAttribute(org.demoiselle.signer.policy.impl.cades.pkcs7.attribute.SignedAttribute) Attribute(org.bouncycastle.asn1.cms.Attribute) CertificateEncodingException(java.security.cert.CertificateEncodingException) X500Name(org.bouncycastle.asn1.x500.X500Name) ASN1Integer(org.bouncycastle.asn1.ASN1Integer) DERSet(org.bouncycastle.asn1.DERSet) X509Certificate(java.security.cert.X509Certificate) AlgorithmIdentifier(org.bouncycastle.asn1.x509.AlgorithmIdentifier) DERSequence(org.bouncycastle.asn1.DERSequence) GeneralNames(org.bouncycastle.asn1.x509.GeneralNames) ESSCertIDv2(org.bouncycastle.asn1.ess.ESSCertIDv2) GeneralName(org.bouncycastle.asn1.x509.GeneralName) SignerException(org.demoiselle.signer.policy.impl.cades.SignerException) ASN1ObjectIdentifier(org.bouncycastle.asn1.ASN1ObjectIdentifier)

Example 7 with IssuerSerial

use of org.bouncycastle.asn1.x509.IssuerSerial in project jruby-openssl by jruby.

the class X509ExtensionFactory method parseAuthorityKeyIdentifier.

private ASN1Sequence parseAuthorityKeyIdentifier(final ThreadContext context, final String valuex) {
    final ASN1EncodableVector vec = new ASN1EncodableVector();
    for (String value : valuex.split(",")) {
        // e.g. "keyid:always,issuer:always"
        if (value.startsWith("keyid:")) {
            // keyid:always
            ASN1Encodable publicKeyIdentifier = new DEROctetString(publicKeyIdentifier(context));
            vec.add(new DERTaggedObject(false, 0, publicKeyIdentifier));
        } else if (value.startsWith("issuer:")) {
            // issuer:always
            GeneralName issuerName = new GeneralName(authorityCertIssuer(context));
            vec.add(new DERTaggedObject(false, 1, new GeneralNames(issuerName)));
            BigInteger issuerSerial = getIssuerSerialNumber(context);
            if (issuerSerial != null) {
                vec.add(new DERTaggedObject(false, 2, new ASN1Integer(issuerSerial)));
            }
        }
    }
    return new DERSequence(vec);
}
Also used : GeneralNames(org.bouncycastle.asn1.x509.GeneralNames) BigInteger(java.math.BigInteger) RubyString(org.jruby.RubyString) GeneralName(org.bouncycastle.asn1.x509.GeneralName)

Aggregations

DERSequence (org.bouncycastle.asn1.DERSequence)5 GeneralName (org.bouncycastle.asn1.x509.GeneralName)5 GeneralNames (org.bouncycastle.asn1.x509.GeneralNames)4 IssuerSerial (org.bouncycastle.asn1.x509.IssuerSerial)4 CertificateEncodingException (java.security.cert.CertificateEncodingException)3 X509Certificate (java.security.cert.X509Certificate)3 ASN1Integer (org.bouncycastle.asn1.ASN1Integer)3 ASN1ObjectIdentifier (org.bouncycastle.asn1.ASN1ObjectIdentifier)3 DERSet (org.bouncycastle.asn1.DERSet)3 Attribute (org.bouncycastle.asn1.cms.Attribute)3 X500Name (org.bouncycastle.asn1.x500.X500Name)3 Digest (org.demoiselle.signer.cryptography.Digest)3 SignerException (org.demoiselle.signer.policy.impl.cades.SignerException)3 ASN1EncodableVector (org.bouncycastle.asn1.ASN1EncodableVector)2 AlgorithmIdentifier (org.bouncycastle.asn1.x509.AlgorithmIdentifier)2 SignedAttribute (org.demoiselle.signer.policy.impl.cades.pkcs7.attribute.SignedAttribute)2 BigInteger (java.math.BigInteger)1 ASN1Encodable (org.bouncycastle.asn1.ASN1Encodable)1 ASN1OctetString (org.bouncycastle.asn1.ASN1OctetString)1 DERBMPString (org.bouncycastle.asn1.DERBMPString)1