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

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

Introduction

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

Prototype

ASN1ObjectIdentifier PSEUDONYM

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

Click Source Link

Document

RFC 3039 Pseudonym - DirectoryString(SIZE(1..64)

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   w  w  w .  jav  a2s  .  c  o  m
 *            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;
}