Example usage for org.bouncycastle.asn1.x500.style BCStyle GIVENNAME

List of usage examples for org.bouncycastle.asn1.x500.style BCStyle GIVENNAME

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.x500.style BCStyle GIVENNAME.

Prototype

ASN1ObjectIdentifier GIVENNAME

To view the source code for org.bouncycastle.asn1.x500.style BCStyle GIVENNAME.

Click Source Link

Usage

From source file:eu.europa.esig.dss.validation.SignedDocumentValidator.java

License:Open Source License

/**
 * This method deals with the certificate's details. The retrieved
 * information is transformed to the JAXB object.
 *
 * @param usedDigestAlgorithms//from ww  w .j a  va2s  .com
 *            set of different digest algorithms used to compute certificate
 *            digest
 * @param certToken
 *            current certificate token
 * @return
 */
private XmlCertificate dealCertificateDetails(final Set<DigestAlgorithm> usedDigestAlgorithms,
        final CertificateToken certToken) {

    final XmlCertificate xmlCert = new XmlCertificate();

    xmlCert.setId(certToken.getDSSId().asXmlId());

    XmlDistinguishedName xmlDistinguishedName = xmlForDistinguishedName(X500Principal.CANONICAL,
            certToken.getSubjectX500Principal());
    xmlCert.getSubjectDistinguishedName().add(xmlDistinguishedName);
    xmlDistinguishedName = xmlForDistinguishedName(X500Principal.RFC2253, certToken.getSubjectX500Principal());
    xmlCert.getSubjectDistinguishedName().add(xmlDistinguishedName);

    xmlDistinguishedName = xmlForDistinguishedName(X500Principal.CANONICAL, certToken.getIssuerX500Principal());
    xmlCert.getIssuerDistinguishedName().add(xmlDistinguishedName);
    xmlDistinguishedName = xmlForDistinguishedName(X500Principal.RFC2253, certToken.getIssuerX500Principal());
    xmlCert.getIssuerDistinguishedName().add(xmlDistinguishedName);

    xmlCert.setSerialNumber(certToken.getSerialNumber());
    X500Principal x500Principal = certToken.getSubjectX500Principal();
    xmlCert.setCommonName(DSSASN1Utils.extractAttributeFromX500Principal(BCStyle.CN, x500Principal));
    xmlCert.setCountryName(DSSASN1Utils.extractAttributeFromX500Principal(BCStyle.C, x500Principal));
    xmlCert.setOrganizationName(DSSASN1Utils.extractAttributeFromX500Principal(BCStyle.O, x500Principal));
    xmlCert.setGivenName(DSSASN1Utils.extractAttributeFromX500Principal(BCStyle.GIVENNAME, x500Principal));
    xmlCert.setOrganizationalUnit(DSSASN1Utils.extractAttributeFromX500Principal(BCStyle.OU, x500Principal));
    xmlCert.setSurname(DSSASN1Utils.extractAttributeFromX500Principal(BCStyle.SURNAME, x500Principal));
    xmlCert.setPseudonym(DSSASN1Utils.extractAttributeFromX500Principal(BCStyle.PSEUDONYM, x500Principal));

    for (final DigestAlgorithm digestAlgorithm : usedDigestAlgorithms) {

        final XmlDigestAlgAndValueType xmlDigestAlgAndValue = new XmlDigestAlgAndValueType();
        xmlDigestAlgAndValue.setDigestMethod(digestAlgorithm.getName());
        xmlDigestAlgAndValue.setDigestValue(DSSUtils.digest(digestAlgorithm, certToken));
        xmlCert.getDigestAlgAndValue().add(xmlDigestAlgAndValue);
    }
    xmlCert.setNotAfter(certToken.getNotAfter());
    xmlCert.setNotBefore(certToken.getNotBefore());
    final PublicKey publicKey = certToken.getPublicKey();
    xmlCert.setPublicKeySize(DSSPKUtils.getPublicKeySize(publicKey));
    xmlCert.setPublicKeyEncryptionAlgo(DSSPKUtils.getPublicKeyEncryptionAlgo(publicKey));

    xmlForKeyUsageBits(certToken, xmlCert);

    if (DSSASN1Utils.isOCSPSigning(certToken)) {
        xmlCert.setIdKpOCSPSigning(true);
    }
    if (DSSASN1Utils.hasIdPkixOcspNoCheckExtension(certToken)) {
        xmlCert.setIdPkixOcspNoCheck(true);
    }

    final XmlBasicSignatureType xmlBasicSignatureType = new XmlBasicSignatureType();

    final SignatureAlgorithm signatureAlgorithm = certToken.getSignatureAlgorithm();
    xmlBasicSignatureType.setDigestAlgoUsedToSignThisToken(signatureAlgorithm.getDigestAlgorithm().getName());
    xmlBasicSignatureType
            .setEncryptionAlgoUsedToSignThisToken(signatureAlgorithm.getEncryptionAlgorithm().getName());
    final String keyLength = DSSPKUtils.getPublicKeySize(certToken);
    xmlBasicSignatureType.setKeyLengthUsedToSignThisToken(keyLength);
    final boolean signatureIntact = certToken.isSignatureValid();
    xmlBasicSignatureType.setReferenceDataFound(signatureIntact);
    xmlBasicSignatureType.setReferenceDataIntact(signatureIntact);
    xmlBasicSignatureType.setSignatureIntact(signatureIntact);
    xmlBasicSignatureType.setSignatureValid(signatureIntact);
    xmlCert.setBasicSignature(xmlBasicSignatureType);

    final CertificateToken issuerToken = certToken.getIssuerToken();
    xmlCert.setSigningCertificate(xmlForSigningCertificate(issuerToken));
    xmlCert.setCertificateChain(xmlForCertificateChain(issuerToken));

    List<String> qcStatementsIdList = DSSASN1Utils.getQCStatementsIdList(certToken);
    if (CollectionUtils.isNotEmpty(qcStatementsIdList)) {
        XmlQCStatementIds qcStatementIds = new XmlQCStatementIds();
        qcStatementIds.getOid().addAll(qcStatementsIdList);
        xmlCert.setQCStatementIds(qcStatementIds);
    }

    List<String> policyIdentifiersList = DSSASN1Utils.getPolicyIdentifiers(certToken);
    if (CollectionUtils.isNotEmpty(policyIdentifiersList)) {
        XmlCertificatePolicyIds certPolicyIds = new XmlCertificatePolicyIds();
        certPolicyIds.getOid().addAll(policyIdentifiersList);
        xmlCert.setCertificatePolicyIds(certPolicyIds);
    }

    xmlCert.setSelfSigned(certToken.isSelfSigned());
    xmlCert.setTrusted(certToken.isTrusted());

    return xmlCert;
}