Example usage for org.bouncycastle.asn1 DEROctetString DEROctetString

List of usage examples for org.bouncycastle.asn1 DEROctetString DEROctetString

Introduction

In this page you can find the example usage for org.bouncycastle.asn1 DEROctetString DEROctetString.

Prototype

public DEROctetString(ASN1Encodable obj) throws IOException 

Source Link

Document

Constructor from the encoding of an ASN.1 object.

Usage

From source file:br.gov.frameworkdemoiselle.certificate.signer.pkcs7.bc.attribute.BCMessageDigest.java

License:Open Source License

@Override
public ASN1Set getValue() {
    MessageDigest attribute = (MessageDigest) super.getAttribute();
    return new DERSet(new DEROctetString(attribute.getValue()));
}

From source file:br.gov.frameworkdemoiselle.certificate.signer.pkcs7.bc.attribute.BCSignaturePolicyIdentifier.java

License:Open Source License

/**
 * TODO: Implementar a converso do tipo SigPolicyQualifierInfoUserNotice
 * para BC./*from  w  w  w .  j  a  v a2 s. com*/
 *
 * @return
 */
@Override
public ASN1Set getValue() {
    if (super.getAttribute() == null) {
        org.bouncycastle.asn1.esf.SignaturePolicyIdentifier signaturePolicyIdentifier = new org.bouncycastle.asn1.esf.SignaturePolicyIdentifier();
        return new DERSet(signaturePolicyIdentifier);
    }
    SignaturePolicyId signaturePolicyId = ((SignaturePolicyIdentifier) super.getAttribute())
            .getSignaturePolicyId();
    if (signaturePolicyId != null) {
        DERObjectIdentifier objectIdentifier = new DERObjectIdentifier(signaturePolicyId.getSigPolicyId());
        OtherHashAlgAndValue otherHashAlgAndValue = new OtherHashAlgAndValue(
                new AlgorithmIdentifier(signaturePolicyId.getHashAlgorithm()),
                new DEROctetString(signaturePolicyId.getHash()));
        SigPolicyQualifiers sigPolicyQualifiers = null;
        if (signaturePolicyId.getSigPolicyQualifiers() != null
                && signaturePolicyId.getSigPolicyQualifiers().size() > 0) {
            List<SigPolicyQualifierInfo> sigPolicyQualifierInfos = new ArrayList<SigPolicyQualifierInfo>();
            for (br.gov.frameworkdemoiselle.certificate.signer.pkcs7.attribute.SigPolicyQualifierInfo sigPolicyQualifierInfo : signaturePolicyId
                    .getSigPolicyQualifiers()) {
                if (sigPolicyQualifierInfo instanceof SigPolicyQualifierInfoURL) {
                    SigPolicyQualifierInfoURL sigPolicyQualifierInfoURL = (SigPolicyQualifierInfoURL) sigPolicyQualifierInfo;
                    DERObjectIdentifier oi = new DERObjectIdentifier(sigPolicyQualifierInfoURL.getOID());
                    DERIA5String url = new DERIA5String(sigPolicyQualifierInfoURL.getValue());
                    SigPolicyQualifierInfo bcSigPolicyQualifierInfo = new SigPolicyQualifierInfo(oi, url);
                    sigPolicyQualifierInfos.add(bcSigPolicyQualifierInfo);
                }
            }
            sigPolicyQualifiers = new SigPolicyQualifiers(
                    sigPolicyQualifierInfos.toArray(new SigPolicyQualifierInfo[] {}));
        }
        org.bouncycastle.asn1.esf.SignaturePolicyId bcSignaturePolicyId = new org.bouncycastle.asn1.esf.SignaturePolicyId(
                objectIdentifier, otherHashAlgAndValue, sigPolicyQualifiers);
        org.bouncycastle.asn1.esf.SignaturePolicyIdentifier signaturePolicyIdentifier = new org.bouncycastle.asn1.esf.SignaturePolicyIdentifier(
                bcSignaturePolicyId);
        return new DERSet(signaturePolicyIdentifier);
    }
    return new DERSet(new DERNull());
}

From source file:ca.trustpoint.m2m.AuthorityKeyIdentifier.java

License:Apache License

/**
 * Returns the DER encoding of this instance.
 *
 * @return The DER encoding of this instance.
 * @throws IOException if this instance cannot be encoded.
 *///  ww  w.  ja v a  2  s . co  m
public byte[] getEncoded() throws IOException {
    if (!isValid()) {
        throw new IOException("AuthKeyId is not valid.");
    }

    ASN1EncodableVector values = new ASN1EncodableVector();

    if (keyIdentifier != null) {
        DEROctetString idOctets = new DEROctetString(keyIdentifier);
        values.add(new DERTaggedObject(false, INDEX_KEY_IDENTIFIER, idOctets));
    }

    if (certificateIssuer != null) {
        ASN1TaggedObject encodedIssuer = DERTaggedObject.getInstance(certificateIssuer.getEncoded());
        values.add(new DERTaggedObject(true, INDEX_AUTH_CERT_ISSUER, encodedIssuer));
    }

    if (certificateSerialNumber != null) {
        DEROctetString serialOctets = new DEROctetString(certificateSerialNumber.toByteArray());
        values.add(new DERTaggedObject(false, INDEX_AUTH_CERT_SERIAL_NUM, serialOctets));
    }

    return (new DERSequence(values).getEncoded());
}

From source file:ca.trustpoint.m2m.EntityNameAttribute.java

License:Apache License

/**
 * Returns the DER encoding of this instance.
 *
 * @return The DER encoding of this instance.
 * @throws IOException if this instance cannot be encoded.
 *//*from ww  w .  jav  a 2  s .com*/
public byte[] getEncoded() throws IOException {
    if (!isValid()) {
        throw new IOException("Attribute is not valid.");
    }

    ASN1Encodable encodedValue;

    switch (id) {
    case Country:
    case DistinguishedNameQualifier:
    case SerialNumber:
        encodedValue = new DERPrintableString(value);
        break;
    case Organization:
    case OrganizationalUnit:
    case StateOrProvince:
    case Locality:
    case CommonName:
        encodedValue = new DERUTF8String(value);
        break;
    case DomainComponent:
        encodedValue = new DERIA5String(value);
        break;
    case RegisteredId:
        encodedValue = new ASN1ObjectIdentifier(value);
        break;
    case OctetsName:
        encodedValue = new DEROctetString(Hex.decode(value));
        break;
    default:
        throw new IOException("Unknown attribute type ID.");
    }

    return new DERTaggedObject(false, id.getIndexId(), encodedValue).getEncoded();
}

From source file:ca.trustpoint.m2m.GeneralName.java

License:Apache License

/**
 * Returns the DER encoding of this instance.
 *
 * @return The DER encoding of this instance.
 * @throws IOException if this instance cannot be encoded.
 *///from   w w  w.  j a  v  a2s . com
public byte[] getEncoded() throws IOException {
    if (!isValid()) {
        throw new IOException("name id and/or value is invalid.");
    }

    ASN1Encodable encodable;
    switch (id) {
    case Rfc822Name:
    case DnsName:
    case Uri:
        encodable = new DERIA5String(value);
        break;

    case DirectoryName:
        encodable = DERSequence.getInstance(entity.getEncoded());
        break;

    case IpAddress:
        encodable = new DEROctetString(InetAddress.getByName(value).getAddress());
        break;

    case RegisteredId:
        encodable = new ASN1ObjectIdentifier(value);
        break;

    default:
        throw new IOException("invalid name id.");
    }

    return new DERTaggedObject(false, id.getIndexId(), encodable).getEncoded();
}

From source file:ca.trustpoint.m2m.KeyAlgorithmDefinition.java

License:Apache License

/**
 * Returns the DER encoding of the signature parameters.
 *
 * @return The DER encoding of the signature parameters.
 * @throws IOException if the signature parameters cannot be encoded.
 *//*from   www .  jav a2 s .c om*/
public byte[] getEncodedParameters() throws IOException {
    if (parameters == null) {
        throw new IOException("parameters must be defined.");
    }

    return ((new DEROctetString(parameters)).getEncoded());
}

From source file:ca.trustpoint.m2m.KeyUsage.java

License:Apache License

/**
 * Returns the DER encoding of this instance.
 *
 * @return The DER encoding of this instance.
 *//*from   ww w  .ja va2 s .c om*/
public byte[] getEncoded() throws IOException {
    return (new DEROctetString(new byte[] { value }).getEncoded());
}

From source file:ca.trustpoint.m2m.M2mCertificate.java

License:Apache License

/**
 * Returns the DER encoded to be signed certificate data. This is what would be sent to a CA for
 * signing, or the data that will be verified with the signature.
 *
 * @return The DER encoded to be signed certificate data.
 * @throws IOException if the encoding fails.
 *//*from  w  w w  .  ja  v  a  2  s .co m*/
public byte[] getTBSCertificate() throws IOException {
    if (!isTbsCertificateValid()) {
        throw new IOException("One or more TBS certificate fields are invalid.");
    }

    ASN1EncodableVector elements = new ASN1EncodableVector();

    /*
     * Since the default is v1 (0), we do not need to explicitly add this to the ASN.1 output.
     *
     * elements.add( new DERTaggedObject( false, TbsCertificateFields.VERSION.getTagNumber(), new
     * ASN1Integer(VERSION)));
     */
    elements.add(new DERTaggedObject(false, TbsCertificateFields.SERIAL_NUMBER.getTagNumber(),
            new DEROctetString(serialNumber)));

    if (caKeyDefinition != null) {
        if (caKeyDefinition.getAlgorithm() != null) {
            elements.add(new DERTaggedObject(false, TbsCertificateFields.CA_ALGORITHM.getTagNumber(),
                    ASN1Primitive.fromByteArray(caKeyDefinition.getEncodedAlgorithm())));
        }

        if (caKeyDefinition.getParameters() != null) {
            elements.add(new DERTaggedObject(false, TbsCertificateFields.CA_ALGORITHM_PARAMETERS.getTagNumber(),
                    ASN1Primitive.fromByteArray(caKeyDefinition.getEncodedParameters())));
        }
    }

    if (issuer != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.ISSUER.getTagNumber(),
                DERSequence.getInstance(issuer.getEncoded())));
    }

    if (validFrom != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.VALID_FROM.getTagNumber(),
                // We record seconds, not milliseconds, hence the / 1000
                new DEROctetString(BigInteger.valueOf(validFrom.getTime() / 1000).toByteArray())));
    }

    if (validDuration != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.VALID_DURATION.getTagNumber(),
                new DEROctetString(BigInteger.valueOf(validDuration.intValue()).toByteArray())));
    }

    elements.add(new DERTaggedObject(false, TbsCertificateFields.SUBJECT.getTagNumber(),
            DERSequence.getInstance(subject.getEncoded())));

    if (publicKeyDefinition != null) {
        if (publicKeyDefinition.getAlgorithm() != null) {
            elements.add(new DERTaggedObject(false, TbsCertificateFields.PUBLIC_KEY_ALGORITHM.getTagNumber(),
                    ASN1Primitive.fromByteArray(publicKeyDefinition.getEncodedAlgorithm())));
        }

        if (publicKeyDefinition.getParameters() != null) {
            elements.add(new DERTaggedObject(false,
                    TbsCertificateFields.PUBLIC_KEY_ALGORITHM_PARAMETERS.getTagNumber(),
                    ASN1Primitive.fromByteArray(publicKeyDefinition.getEncodedParameters())));
        }
    }

    if (publicKey != null) {
        byte[] publicKeyBytes = KeyConversionUtils.convertEcPublicKeyToRawBytes(publicKey,
                isPublicKeyCompressed);

        elements.add(new DERTaggedObject(false, TbsCertificateFields.PUBLIC_KEY.getTagNumber(),
                new DEROctetString(publicKeyBytes)));
    }

    if (authorityKeyIdentifier != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.AUTHORITY_KEY_ID.getTagNumber(),
                ASN1Primitive.fromByteArray(authorityKeyIdentifier.getEncoded())));
    }

    if (subjectKeyIdentifier != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.SUBJECT_KEY_ID.getTagNumber(),
                new DEROctetString(subjectKeyIdentifier)));
    }

    if (keyUsage != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.KEY_USAGE.getTagNumber(),
                ASN1Primitive.fromByteArray(keyUsage.getEncoded())));
    }

    if (basicConstraints != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.BASIC_CONSTRAINTS.getTagNumber(),
                new ASN1Integer(basicConstraints.intValue())));
    }

    if (certificatePolicy != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.CERTIFICATE_POLICY.getTagNumber(),
                new ASN1ObjectIdentifier(certificatePolicy)));
    }

    if (subjectAlternativeName != null) {
        elements.add(new DERTaggedObject(true, TbsCertificateFields.SUBJECT_ALTERNATE_NAME.getTagNumber(),
                DERTaggedObject.getInstance(subjectAlternativeName.getEncoded())));
    }

    if (issuerAlternativeName != null) {
        elements.add(new DERTaggedObject(true, TbsCertificateFields.ISSUER_ALTERNATE_NAME.getTagNumber(),
                DERTaggedObject.getInstance(issuerAlternativeName.getEncoded())));
    }

    if (extendedKeyUsage != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.EXTENDED_KEY_USAGE.getTagNumber(),
                new ASN1ObjectIdentifier(extendedKeyUsage)));
    }

    if (authenticationInfoAccessOcsp != null) {
        elements.add(
                new DERTaggedObject(false, TbsCertificateFields.AUTHENTICATION_INFO_ACCESS_OCSP.getTagNumber(),
                        new DERIA5String(authenticationInfoAccessOcsp.toString())));
    }

    if (crlDistributionPointUri != null) {
        elements.add(new DERTaggedObject(false, TbsCertificateFields.CRL_DISTRIBUTION_POINT_URI.getTagNumber(),
                new DERIA5String(crlDistributionPointUri.toString())));
    }

    if (!extensions.isEmpty()) {
        ASN1EncodableVector toBeEncodedExtensions = new ASN1EncodableVector();

        for (Extension extension : extensions) {
            toBeEncodedExtensions.add(new DERSequence(extension.getEncoded()));
        }

        elements.add(new DERTaggedObject(false, TbsCertificateFields.EXTENSIONS.getTagNumber(),
                new DERSequence(toBeEncodedExtensions)));
    }

    return ((new DERSequence(elements)).getEncoded());
}

From source file:ca.trustpoint.m2m.M2mCertificate.java

License:Apache License

@Override
public byte[] getEncoded() throws CertificateEncodingException {
    ASN1EncodableVector elements = new ASN1EncodableVector();

    if (!isTbsCertificateValid()) {
        throw new CertificateEncodingException("TBS certificate is invalid.");
    } else if ((caCalcValue == null) || (caCalcValue.length == 0)) {
        throw new CertificateEncodingException("Signature or reconstruction value must be present.");
    }//w  ww . j a  v a 2 s .com

    try {
        elements.add(new DERTaggedObject(false, CertificateFields.TBS_CERTIFICATE.getTagNumber(),
                DERSequence.fromByteArray(getTBSCertificate())));
    } catch (IOException ex) {
        throw new CertificateEncodingException("Could not encode TBS certificate fields.", ex);
    }

    elements.add(new DERTaggedObject(false, CertificateFields.CA_CALC_VALUE.getTagNumber(),
            new DEROctetString(caCalcValue)));

    DERApplicationSpecific certificate = null;

    try {
        certificate = new DERApplicationSpecific(false, APPLICATION_TAG_NUMBER, new DERSequence(elements));
    } catch (IOException ex) {
        throw new CertificateEncodingException("Could not construct ASN.1 certificate.", ex);
    }

    byte[] encodedBytes = null;

    try {
        encodedBytes = certificate.getEncoded();
    } catch (IOException ex) {
        throw new CertificateEncodingException("Could not encode certificate.", ex);
    }

    return encodedBytes;
}

From source file:ch.bfh.unicert.certimport.CertificateHelper.java

License:GNU General Public License

/**
 * Converts a string to a DER encoded octet string
 * @param string the string to convert//from   www. j  a  v  a 2 s .  co  m
 * @return a DER encoded octet string
 */
public static DEROctetString stringToDER(String string) {
    return new DEROctetString(string.getBytes());
}