List of usage examples for org.bouncycastle.asn1 ASN1Integer getInstance
public static ASN1Integer getInstance(Object obj)
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; } }