Example usage for org.bouncycastle.asn1 ASN1Sequence getObjectAt

List of usage examples for org.bouncycastle.asn1 ASN1Sequence getObjectAt

Introduction

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

Prototype

public ASN1Encodable getObjectAt(int index) 

Source Link

Document

Return the object at the sequence position indicated by index.

Usage

From source file:org.jnotary.dvcs.DVCSCertInfo.java

License:Open Source License

@SuppressWarnings("rawtypes")
private DVCSCertInfo(ASN1Sequence seq) {
    Enumeration e = seq.getObjects();

    Object obj = e.nextElement();
    if (obj instanceof ASN1Integer) {
        this.version = DERInteger.getInstance(obj);
        obj = e.nextElement();//from   ww  w .  ja  va2 s.co m
    }
    this.dvReqInfo = DVCSRequestInformation.getInstance(obj);
    this.messageImprint = DigestInfo.getInstance(e.nextElement());
    this.serialNumber = DERInteger.getInstance(e.nextElement());
    this.responseTime = DVCSTime.getInstance(e.nextElement());

    for (; e.hasMoreElements();) {
        obj = e.nextElement();
        if (obj instanceof ASN1TaggedObject) {
            ASN1TaggedObject tagObj = (ASN1TaggedObject) obj;
            switch (tagObj.getTagNo()) {
            case 0:
                dvStatus = PKIStatusInfo.getInstance(tagObj.getObject());
                break;
            case 1:
                policy = PolicyInformation.getInstance(tagObj.getObject());
                break;
            case 2:
                reqSignature = SignerInfo.getInstance(tagObj.getObject());
                break;
            case 3:
                ASN1Sequence seqCerts = DERSequence.getInstance(tagObj.getObject());
                certs = new TargetEtcChain[seqCerts.size()];
                for (int i = 0; i < seqCerts.size(); ++i) {
                    certs[i] = TargetEtcChain.getInstance(seqCerts.getObjectAt(i));
                }

                break;
            }
        } else {
            Extensions.getInstance(obj);
        }
    }

}

From source file:org.jnotary.dvcs.PathProcInput.java

License:Open Source License

private PathProcInput(ASN1Sequence seq) {
    Enumeration e = seq.getObjects();
    ASN1Sequence policies = DERSequence.getInstance(e.nextElement());
    acceptablePolicySet = new PolicyInformation[policies.size()];
    for (int i = 0; i < policies.size(); ++i) {
        acceptablePolicySet[i] = PolicyInformation.getInstance(policies.getObjectAt(i));
    }/*from   w w w  . j a  v a2  s. c  o  m*/
    inhibitPolicyMapping = DERBoolean.getInstance(e.nextElement());
    explicitPolicyReqd = DERBoolean.getInstance(e.nextElement());
}

From source file:org.jnotary.dvcs.TargetEtcChain.java

License:Open Source License

private TargetEtcChain(ASN1Sequence seq) {
    Enumeration e = seq.getObjects();

    target = CertEtcToken.getInstance(e.nextElement());

    if (!e.hasMoreElements())
        return;//from   w  w  w  . j a v  a 2  s.c  o  m
    Object obj = e.nextElement();

    if (!(obj instanceof ASN1TaggedObject)) {
        ASN1Sequence policies = DERSequence.getInstance(obj);
        chain = new CertEtcToken[policies.size()];
        for (int i = 0; i < policies.size(); ++i) {
            chain[i] = CertEtcToken.getInstance(policies.getObjectAt(i));
        }

        if (!e.hasMoreElements())
            return;
        obj = e.nextElement();
    }

    ASN1TaggedObject tagObj = (ASN1TaggedObject) obj;
    pathProcInput = PathProcInput.getInstance(tagObj.getObject());
}

From source file:org.jruby.ext.openssl.impl.EncContent.java

License:LGPL

/**
 * EncryptedContentInfo ::= SEQUENCE {// ww  w  . java2  s. co  m
 *   contentType ContentType,
 *   contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
 *   encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL }
 *
 * EncryptedContent ::= OCTET STRING
 */
public static EncContent fromASN1(ASN1Encodable content) {
    ASN1Sequence sequence = (ASN1Sequence) content;
    ASN1ObjectIdentifier contentType = (ASN1ObjectIdentifier) (sequence.getObjectAt(0));
    int nid = ASN1Registry.obj2nid(contentType);

    EncContent ec = new EncContent();
    ec.setContentType(nid);
    ec.setAlgorithm(AlgorithmIdentifier.getInstance(sequence.getObjectAt(1)));
    if (sequence.size() > 2 && sequence.getObjectAt(2) instanceof ASN1TaggedObject
            && ((ASN1TaggedObject) (sequence.getObjectAt(2))).getTagNo() == 0) {
        ASN1Encodable ee = ((ASN1TaggedObject) (sequence.getObjectAt(2))).getObject();
        if (ee instanceof ASN1Sequence && ((ASN1Sequence) ee).size() > 0) {
            ByteList combinedOctets = new ByteList();
            Enumeration enm = ((ASN1Sequence) ee).getObjects();
            while (enm.hasMoreElements()) {
                byte[] octets = ((ASN1OctetString) enm.nextElement()).getOctets();
                combinedOctets.append(octets);
            }
            ec.setEncData(new DEROctetString(combinedOctets.bytes()));
        } else {
            ec.setEncData((ASN1OctetString) ee);
        }
    }
    return ec;
}

From source file:org.jruby.ext.openssl.impl.Envelope.java

License:LGPL

/**
 * EnvelopedData ::= SEQUENCE {//ww w.j  a  v a2  s  .co m
 *   version Version,
 *   recipientInfos RecipientInfos,
 *   encryptedContentInfo EncryptedContentInfo }
 *
 * Version ::= INTEGER
 *
 * RecipientInfos ::= SET OF RecipientInfo
 *
 */
public static Envelope fromASN1(ASN1Encodable content) {
    ASN1Sequence sequence = (ASN1Sequence) content;
    ASN1Integer version = (ASN1Integer) sequence.getObjectAt(0);
    ASN1Set recipients = (ASN1Set) sequence.getObjectAt(1);
    ASN1Encodable encContent = sequence.getObjectAt(2);

    Envelope envelope = new Envelope();
    envelope.setVersion(version.getValue().intValue());
    envelope.setRecipientInfo(recipientInfosFromASN1Set(recipients));
    envelope.setEncData(EncContent.fromASN1(encContent));

    return envelope;
}

From source file:org.jruby.ext.openssl.impl.NetscapeCertRequest.java

License:Open Source License

public NetscapeCertRequest(final byte[] request)
        throws NoSuchAlgorithmException, InvalidKeySpecException, IllegalArgumentException {

    ASN1InputStream input = new ASN1InputStream(new ByteArrayInputStream(request));
    ASN1Sequence spkac;
    try {/*from  w ww  .j av  a  2s .c om*/
        spkac = ASN1Sequence.getInstance(input.readObject());
    } catch (IOException e) {
        throw new IllegalArgumentException(e);
    }

    //
    // SignedPublicKeyAndChallenge ::= SEQUENCE {
    // publicKeyAndChallenge PublicKeyAndChallenge,
    // signatureAlgorithm AlgorithmIdentifier,
    // signature BIT STRING
    // }
    //
    if (spkac.size() != 3) {
        throw new IllegalArgumentException("invalid SPKAC (size):" + spkac.size());
    }

    final ASN1Sequence signatureId = (ASN1Sequence) spkac.getObjectAt(1);
    this.sigAlg = AlgorithmIdentifier.getInstance(signatureId);
    this.signatureBits = ((DERBitString) spkac.getObjectAt(2)).getBytes();

    //
    // PublicKeyAndChallenge ::= SEQUENCE {
    // spki SubjectPublicKeyInfo,
    // challenge IA5STRING
    // }
    //
    ASN1Sequence pkac = (ASN1Sequence) spkac.getObjectAt(0);

    if (pkac.size() != 2) {
        throw new IllegalArgumentException("invalid PKAC (len): " + pkac.size());
    }

    this.challenge = ((DERIA5String) pkac.getObjectAt(1)).getString();

    final String keyAlgorithm;
    final X509EncodedKeySpec encodedKeySpec;
    try {
        //this could be dangerous, as ASN.1 decoding/encoding
        //could potentially alter the bytes
        this.content = new DERBitString(pkac);

        final SubjectPublicKeyInfo pubKeyInfo = new SubjectPublicKeyInfo((ASN1Sequence) pkac.getObjectAt(0));

        encodedKeySpec = new X509EncodedKeySpec(new DERBitString(pubKeyInfo).getBytes());

        this.keyAlg = pubKeyInfo.getAlgorithm();
        keyAlgorithm = keyAlg.getAlgorithm().getId();
    } catch (Exception e) {
        // new DERBitString throw IOExcetpion since BC 1.49
        //if ( e instanceof IOException ) {
        //    throw new IllegalArgumentException(e);
        //}
        if (e instanceof RuntimeException)
            throw (RuntimeException) e;
        throw new IllegalArgumentException(e);
    }

    KeyFactory keyFactory = SecurityHelper.getKeyFactory(keyAlgorithm);
    this.publicKey = keyFactory.generatePublic(encodedKeySpec);
}

From source file:org.jruby.ext.openssl.impl.PKey.java

License:LGPL

public static KeyPair readPrivateKey(byte[] input, String type) throws IOException, GeneralSecurityException {
    KeySpec pubSpec = null;//from w  ww .j av a 2s .c o  m
    KeySpec privSpec = null;
    ASN1Sequence seq = (ASN1Sequence) new ASN1InputStream(input).readObject();
    if (type.equals("RSA")) {
        ASN1Integer mod = (ASN1Integer) seq.getObjectAt(1);
        ASN1Integer pubExp = (ASN1Integer) seq.getObjectAt(2);
        ASN1Integer privExp = (ASN1Integer) seq.getObjectAt(3);
        ASN1Integer p1 = (ASN1Integer) seq.getObjectAt(4);
        ASN1Integer p2 = (ASN1Integer) seq.getObjectAt(5);
        ASN1Integer exp1 = (ASN1Integer) seq.getObjectAt(6);
        ASN1Integer exp2 = (ASN1Integer) seq.getObjectAt(7);
        ASN1Integer crtCoef = (ASN1Integer) seq.getObjectAt(8);
        pubSpec = new RSAPublicKeySpec(mod.getValue(), pubExp.getValue());
        privSpec = new RSAPrivateCrtKeySpec(mod.getValue(), pubExp.getValue(), privExp.getValue(),
                p1.getValue(), p2.getValue(), exp1.getValue(), exp2.getValue(), crtCoef.getValue());
    } else { // assume "DSA" for now.
        ASN1Integer p = (ASN1Integer) seq.getObjectAt(1);
        ASN1Integer q = (ASN1Integer) seq.getObjectAt(2);
        ASN1Integer g = (ASN1Integer) seq.getObjectAt(3);
        ASN1Integer y = (ASN1Integer) seq.getObjectAt(4);
        ASN1Integer x = (ASN1Integer) seq.getObjectAt(5);
        privSpec = new DSAPrivateKeySpec(x.getValue(), p.getValue(), q.getValue(), g.getValue());
        pubSpec = new DSAPublicKeySpec(y.getValue(), p.getValue(), q.getValue(), g.getValue());
    }
    KeyFactory fact = KeyFactory.getInstance(type);
    return new KeyPair(fact.generatePublic(pubSpec), fact.generatePrivate(privSpec));
}

From source file:org.jruby.ext.openssl.impl.PKey.java

License:LGPL

public static KeyPair readRSAPrivateKey(byte[] input) throws IOException, GeneralSecurityException {
    KeyFactory fact = KeyFactory.getInstance("RSA");
    ASN1Sequence seq = (ASN1Sequence) (new ASN1InputStream(input).readObject());
    if (seq.size() == 9) {
        BigInteger mod = ((ASN1Integer) seq.getObjectAt(1)).getValue();
        BigInteger pubexp = ((ASN1Integer) seq.getObjectAt(2)).getValue();
        BigInteger privexp = ((ASN1Integer) seq.getObjectAt(3)).getValue();
        BigInteger primep = ((ASN1Integer) seq.getObjectAt(4)).getValue();
        BigInteger primeq = ((ASN1Integer) seq.getObjectAt(5)).getValue();
        BigInteger primeep = ((ASN1Integer) seq.getObjectAt(6)).getValue();
        BigInteger primeeq = ((ASN1Integer) seq.getObjectAt(7)).getValue();
        BigInteger crtcoeff = ((ASN1Integer) seq.getObjectAt(8)).getValue();
        PrivateKey priv = fact.generatePrivate(
                new RSAPrivateCrtKeySpec(mod, pubexp, privexp, primep, primeq, primeep, primeeq, crtcoeff));
        PublicKey pub = fact.generatePublic(new RSAPublicKeySpec(mod, pubexp));
        return new KeyPair(pub, priv);
    } else {//from   ww  w  .  j  a v a 2s  .c  o m
        return null;
    }
}

From source file:org.jruby.ext.openssl.impl.PKey.java

License:LGPL

public static PublicKey readRSAPublicKey(byte[] input) throws IOException, GeneralSecurityException {
    KeyFactory fact = KeyFactory.getInstance("RSA");
    ASN1Sequence seq = (ASN1Sequence) (new ASN1InputStream(input).readObject());
    if (seq.size() == 2) {
        BigInteger mod = ((ASN1Integer) seq.getObjectAt(0)).getValue();
        BigInteger pubexp = ((ASN1Integer) seq.getObjectAt(1)).getValue();
        return fact.generatePublic(new RSAPublicKeySpec(mod, pubexp));
    } else {/*from  w w  w  . j  a  v  a2 s .com*/
        return null;
    }
}

From source file:org.jruby.ext.openssl.impl.PKey.java

License:LGPL

public static KeyPair readDSAPrivateKey(byte[] input) throws IOException, GeneralSecurityException {
    KeyFactory fact = KeyFactory.getInstance("DSA");
    ASN1Sequence seq = (ASN1Sequence) (new ASN1InputStream(input).readObject());
    if (seq.size() == 6) {
        BigInteger p = ((ASN1Integer) seq.getObjectAt(1)).getValue();
        BigInteger q = ((ASN1Integer) seq.getObjectAt(2)).getValue();
        BigInteger g = ((ASN1Integer) seq.getObjectAt(3)).getValue();
        BigInteger y = ((ASN1Integer) seq.getObjectAt(4)).getValue();
        BigInteger x = ((ASN1Integer) seq.getObjectAt(5)).getValue();
        PrivateKey priv = fact.generatePrivate(new DSAPrivateKeySpec(x, p, q, g));
        PublicKey pub = fact.generatePublic(new DSAPublicKeySpec(y, p, q, g));
        return new KeyPair(pub, priv);
    } else {/*from   w w  w  . j  av  a 2s  .c  o  m*/
        return null;
    }
}