Example usage for org.bouncycastle.asn1 ASN1Integer getInstance

List of usage examples for org.bouncycastle.asn1 ASN1Integer getInstance

Introduction

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

Prototype

public static ASN1Integer getInstance(Object obj) 

Source Link

Document

Return an integer from the passed in object.

Usage

From source file:se.tillvaxtverket.ttsigvalws.ttwssigvalidation.pdf.PdfBoxSigUtil.java

License:Open Source License

/**
 * Parse a Time-Stamp TsInfo byte array/*from   w  w w .j ava2s  .  c om*/
 *
 * @param tsToken The bytes of a tsInfo object
 * @return A data object holding essential time stamp information
 */
public static TimeStampData getTimeStampData(byte[] tsToken) {
    TimeStampData tsData = new TimeStampData();
    tsData.setTimeStampToken(tsToken);
    try {

        ASN1InputStream din = new ASN1InputStream(new ByteArrayInputStream(tsToken));
        ASN1Sequence tsTokenSeq = ASN1Sequence.getInstance(din.readObject());

        // Get version
        int seqIdx = 0;
        int version = ASN1Integer.getInstance(tsTokenSeq.getObjectAt(seqIdx++)).getPositiveValue().intValue();
        tsData.setVersion(version);

        //Get Policy
        String policy = ASN1ObjectIdentifier.getInstance(tsTokenSeq.getObjectAt(seqIdx++)).getId();
        tsData.setPolicy(policy);

        //Get Message Imprint data (hash algo and hash value
        ASN1Sequence messageImprintSeq = ASN1Sequence.getInstance(tsTokenSeq.getObjectAt(seqIdx++));
        AlgorithmIdentifier miAi = AlgorithmIdentifier.getInstance(messageImprintSeq.getObjectAt(0));
        byte[] miOctets = DEROctetString.getInstance(messageImprintSeq.getObjectAt(1)).getOctets();
        tsData.setImprintHashAlgo(DigestAlgorithm.getDigestAlgoFromOid(miAi.getAlgorithm().getId()));
        tsData.setImprintDigest(miOctets);

        //Serial number
        tsData.setSerialNumber(ASN1Integer.getInstance(tsTokenSeq.getObjectAt(seqIdx++)).getValue());

        // Time
        Date tsTime = ASN1GeneralizedTime.getInstance(tsTokenSeq.getObjectAt(seqIdx++)).getDate();
        tsData.setTime(tsTime);

        // Skip until next tagged token
        while (tsTokenSeq.size() > seqIdx && !(tsTokenSeq.getObjectAt(seqIdx) instanceof ASN1TaggedObject)) {
            seqIdx++;
        }

        // Get TSA name
        GeneralName tsaName = GeneralName.getInstance(tsTokenSeq.getObjectAt(seqIdx));
        try {
            ASN1Sequence genNameSeq = ASN1Sequence.getInstance(tsaName.getName());
            ASN1TaggedObject taggedGenNameOjb = ASN1TaggedObject.getInstance(genNameSeq.getObjectAt(0));
            if (taggedGenNameOjb.getTagNo() == 4) {
                ASN1Sequence nameSeq = ASN1Sequence.getInstance(taggedGenNameOjb.getObject());
                Map<SubjectDnAttribute, String> subjectAttributes = getSubjectAttributes(nameSeq);
                tsData.setIssuerDnMap(subjectAttributes);
            }

        } catch (Exception e) {
        }

    } catch (IOException | ParseException ex) {
        Logger.getLogger(PdfBoxSigUtil.class.getName()).warning(ex.getMessage());
    }

    return tsData;

}

From source file:se.tillvaxtverket.ttsigvalws.ttwssigvalidation.pdf.PdfSignatureVerifier.java

License:Open Source License

/**
 * Retrieves Public key parameters from a public key
 *
 * @param pubKey The public key// w w w .  j  a v  a2s  . c om
 * @param sigResult The data object where result data are stored
 * @throws IOException
 */
public static void getPkParams(PublicKey pubKey, CMSSigVerifyResult sigResult) throws IOException {

    try {
        String pkStr = String.valueOf(Base64Coder.encode(pubKey.getEncoded()));

        ASN1InputStream din = new ASN1InputStream(new ByteArrayInputStream(pubKey.getEncoded()));
        //ASN1Primitive pkObject = din.readObject();
        ASN1Sequence pkSeq = ASN1Sequence.getInstance(din.readObject());
        ASN1BitString keyBits = (ASN1BitString) pkSeq.getObjectAt(1);

        AlgorithmIdentifier algoId = AlgorithmIdentifier.getInstance(pkSeq.getObjectAt(0));
        PublicKeyType pkType = PublicKeyType.getTypeFromOid(algoId.getAlgorithm().getId());
        sigResult.setPkType(pkType);
        sigResult.setPkType(pkType);
        if (pkType.equals(PublicKeyType.EC)) {
            ASN1ObjectIdentifier curveOid = ASN1ObjectIdentifier.getInstance(algoId.getParameters());
            EcCurve curve = EcCurve.getEcCurveFromOid(curveOid.getId());
            sigResult.setEcCurve(curve);
            int totalKeyBits = getEcKeyLength(keyBits);
            sigResult.setKeyLength(totalKeyBits);
            return;
        }

        if (pkType.equals(PublicKeyType.RSA)) {
            ASN1InputStream keyIs = new ASN1InputStream(keyBits.getOctets());
            ASN1Sequence keyParamsSeq = ASN1Sequence.getInstance(keyIs.readObject());
            ASN1Integer modInt = ASN1Integer.getInstance(keyParamsSeq.getObjectAt(0));
            int modLen = getAsn1IntegerBitLength(modInt);
            sigResult.setKeyLength(modLen);
            return;
        }

    } catch (Exception e) {
        int asdf = 0;
    }

}