Example usage for org.bouncycastle.asn1 DERSequence DERSequence

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

Introduction

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

Prototype

public DERSequence(ASN1Encodable[] elements) 

Source Link

Document

Create a sequence containing an array of objects.

Usage

From source file:com.github.horrorho.inflatabledonkey.data.der.Signature.java

License:Open Source License

@Override
public ASN1Primitive toASN1Primitive() {
    ASN1EncodableVector vector = DER.vector(new DEROctetString(signerKeyID()), new ASN1Integer(type),
            new DEROctetString(data()));

    return new DERSequence(vector);
}

From source file:com.github.horrorho.inflatabledonkey.data.der.SignatureInfo.java

License:Open Source License

@Override
public ASN1Primitive toASN1Primitive() {
    ASN1EncodableVector inner = DER.vector(new ASN1Integer(version), new DEROctetString(info()));

    ASN1EncodableVector outer = DER.vector(new DERSequence(inner));

    return new DERSequence(outer);
}

From source file:com.github.horrorho.inflatabledonkey.data.der.TypeData.java

License:Open Source License

@Override
public ASN1Primitive toASN1Primitive() {
    ASN1EncodableVector vector = DER.vector(new ASN1Integer(type), new DEROctetString(data()));

    return new DERSequence(vector);
}

From source file:com.github.spyhunter99.simplejks.CertGenBouncy.java

public static java.security.cert.Certificate selfSign(KeyPair keyPair, String subjectDN)
        throws OperatorCreationException, CertificateException, IOException {
    Provider bcProvider = new BouncyCastleProvider();
    Security.addProvider(bcProvider);

    long now = System.currentTimeMillis();
    Date startDate = new Date(now);

    X500Name dnName = new X500Name(subjectDN);
    BigInteger certSerialNumber = new BigInteger(Long.toString(now)); // <-- Using the current timestamp as the certificate serial number

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(startDate);/*from www . j  a  v  a2  s . co m*/
    calendar.add(Calendar.YEAR, 30); // <-- 1 Yr validity

    Date endDate = calendar.getTime();

    String signatureAlgorithm = "SHA256WithRSA"; // <-- Use appropriate signature algorithm based on your keyPair algorithm.

    ContentSigner contentSigner = new JcaContentSignerBuilder(signatureAlgorithm).build(keyPair.getPrivate());

    JcaX509v3CertificateBuilder certBuilder = new JcaX509v3CertificateBuilder(dnName, certSerialNumber,
            startDate, endDate, dnName, keyPair.getPublic());

    // Extensions --------------------------
    // Basic Constraints
    BasicConstraints basicConstraints = new BasicConstraints(true); // <-- true for CA, false for EndEntity

    certBuilder.addExtension(new ASN1ObjectIdentifier("2.5.29.19"), true, basicConstraints); // Basic Constraints is usually marked as critical.

    ASN1Encodable[] subjectAlternativeNames = new ASN1Encodable[] {
            new GeneralName(GeneralName.dNSName, "server"),
            new GeneralName(GeneralName.dNSName, "server.mydomain.com") };
    DERSequence subjectAlternativeNamesExtension = new DERSequence(subjectAlternativeNames);
    certBuilder.addExtension(X509Extension.subjectAlternativeName, false, subjectAlternativeNamesExtension);

    // -------------------------------------
    return new JcaX509CertificateConverter().setProvider(bcProvider)
            .getCertificate(certBuilder.build(contentSigner));
}

From source file:com.goodvikings.cryptim.api.KeyRing.java

License:BEER-WARE LICENSE

private byte[] ASN1EncodeKeys() throws IOException, PGPException {
    JcaPGPKeyConverter converter = new JcaPGPKeyConverter();

    PrivateKey priv = converter.getPrivateKey(kp.getPrivateKey());
    PublicKey pub = converter.getPublicKey(kp.getPublicKey());

    ASN1EncodableVector pubSeq = new ASN1EncodableVector();

    for (String jid : keys.keySet()) {
        pubSeq.add(new DERSequence(new ASN1Encodable[] { new DERUTF8String(jid),
                new DERUTF8String(nicks.get(jid)), new DERUTCTime(keys.get(jid).getCreationTime()),
                new DEROctetString(converter.getPublicKey(keys.get(jid)).getEncoded()) }));
    }/*from  w w  w .  j  a  v a 2 s  .  c om*/

    DERSequence seq = new DERSequence(new ASN1Encodable[] {
            new DERSequence(new ASN1Encodable[] { new DERUTCTime(kp.getPublicKey().getCreationTime()),
                    new DEROctetString(pub.getEncoded()) }),
            new DEROctetString(priv.getEncoded()), new DERSequence(pubSeq) });

    return seq.getEncoded();
}

From source file:com.guardtime.asn1.Asn1Util.java

License:Apache License

/**
 * Extends the given content info with data from the given certification
 * token.//  w  ww . j  av  a  2  s.  c  o m
 *
 * @param contentInfo
 *            the original timestamp encoded in a CMS {@code ContentInfo}
 *            structure.
 * @param certToken
 *            the {@code CertToken} from the GuardTime online verification
 *            service.
 * @return updated (extended) timestamp encoded in a new CMS
 *         {@code ContentInfo} structure.
 */
static org.bouncycastle.asn1.cms.ContentInfo extend(org.bouncycastle.asn1.cms.ContentInfo contentInfo,
        Asn1CertToken certToken) throws Asn1FormatException {
    ASN1EncodableVector v;

    // Extract signed data
    ASN1Encodable asn1SignedData = contentInfo.getContent();
    org.bouncycastle.asn1.cms.SignedData content = org.bouncycastle.asn1.cms.SignedData
            .getInstance(asn1SignedData);

    // Extract signer info
    ASN1Encodable asn1SignerInfo = content.getSignerInfos().getObjectAt(0);
    org.bouncycastle.asn1.cms.SignerInfo signerInfo = org.bouncycastle.asn1.cms.SignerInfo
            .getInstance(asn1SignerInfo);

    // Extract time signature
    ASN1Primitive asn1TimeSignature = null;
    try {
        asn1TimeSignature = ASN1Primitive.fromByteArray(signerInfo.getEncryptedDigest().getOctets());
    } catch (IOException e) {
        throw new Asn1FormatException("time signature has invalid format");
    }
    Asn1TimeSignature timeSignature = Asn1TimeSignature.getInstance(asn1TimeSignature);

    // Extend TimeSignature
    v = new ASN1EncodableVector();
    v.add(timeSignature.getLocation());
    v.add(certToken.getHistory());
    v.add(certToken.getPublishedData());
    // Skip PK signature <- updated
    v.add(new DERTaggedObject(false, 1, certToken.getPubReference()));
    timeSignature = Asn1TimeSignature.getInstance(new DERSequence(v));

    // Extend SignerInfo
    v = new ASN1EncodableVector();
    v.add(signerInfo.getVersion());
    v.add(signerInfo.getSID());
    v.add(signerInfo.getDigestAlgorithm());

    ASN1Set signedAttrs = signerInfo.getAuthenticatedAttributes();
    if (signedAttrs != null) {
        v.add(new DERTaggedObject(false, 0, signedAttrs));
    }

    v.add(signerInfo.getDigestEncryptionAlgorithm());
    try {
        v.add(new DEROctetString(timeSignature)); // <- updated
    } catch (IOException e) {
        throw new Asn1FormatException(e);
    }

    ASN1Set unsignedAttrs = signerInfo.getUnauthenticatedAttributes();
    if (unsignedAttrs != null) {
        v.add(new DERTaggedObject(false, 1, unsignedAttrs));
    }

    signerInfo = org.bouncycastle.asn1.cms.SignerInfo.getInstance(new DERSequence(v));

    // Extend SignedData
    v = new ASN1EncodableVector();
    v.add(content.getVersion());
    v.add(content.getDigestAlgorithms());
    v.add(content.getEncapContentInfo());
    // Skipping certificates <- updated
    // Skipping CRLs <- updated
    v.add(new DERSet(signerInfo)); // <- updated
    content = org.bouncycastle.asn1.cms.SignedData.getInstance(new DERSequence(v));

    // Extend ContentInfo
    v = new ASN1EncodableVector();
    v.add(contentInfo.getContentType());
    v.add(new DERTaggedObject(true, 0, content)); // <- updated
    contentInfo = org.bouncycastle.asn1.cms.ContentInfo.getInstance(new DERSequence(v));

    return contentInfo;
}

From source file:com.guardtime.asn1.CertToken.java

License:Apache License

public ASN1Primitive toASN1Primitive() {
    ASN1EncodableVector v = new ASN1EncodableVector();
    v.add(version);// w ww .j  a v  a 2  s .  co  m
    v.add(history);
    v.add(publishedData);
    v.add(pubReference);
    if (extensions != null) {
        v.add(new DERTaggedObject(false, 0, extensions));
    }
    return new DERSequence(v);
}

From source file:com.guardtime.asn1.CertTokenRequest.java

License:Apache License

/**
 * Composes a new {@code CertTokenRequest} structure containing the given
 * history identifier and no extensions.
 *
 * @param historyId/*from  w w w.  j a  va  2s .  co m*/
 *            identifier of the second for which the certification token in
 *            requested.
 * @return a new certification token request.
 */
public static CertTokenRequest compose(BigInteger historyId) {
    if (historyId == null) {
        throw new IllegalArgumentException("invalid history ID: null");
    }

    ASN1EncodableVector v = new ASN1EncodableVector();
    v.add(new ASN1Integer(VERSION));
    v.add(new ASN1Integer(historyId));
    ASN1Sequence seq = new DERSequence(v);
    Asn1CertTokenRequest req = new Asn1CertTokenRequest(seq);
    return new CertTokenRequest(req);
}

From source file:com.guardtime.asn1.CertTokenRequest.java

License:Apache License

public ASN1Primitive toASN1Primitive() {
    ASN1EncodableVector v = new ASN1EncodableVector();
    v.add(version);//from  w w w  .  j a v a  2  s. c  o m
    v.add(historyIdentifier);
    if (extensions != null) {
        v.add(new DERTaggedObject(false, 0, extensions));
    }
    return new DERSequence(v);
}

From source file:com.guardtime.asn1.CertTokenResponse.java

License:Apache License

public ASN1Primitive toASN1Primitive() {
    ASN1EncodableVector v = new ASN1EncodableVector();
    v.add(status);/*from   w  w  w.jav a2 s  . c  om*/
    if (certToken != null) {
        v.add(new DERTaggedObject(0, certToken));
    }
    return new DERSequence(v);
}