public EncryptedContentInfo(ASN1Sequence seq) {
   contentType = (DERObjectIdentifier) seq.getObjectAt(0);
   contentEncryptionAlgorithm = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
   if (seq.size() > 2) {
     encryptedContent = ASN1OctetString.getInstance((ASN1TaggedObject) seq.getObjectAt(2), false);
   }
 }
  public ASN1OctetString getContent() {
    if (data.size() == 3) {
      DERTaggedObject o = (DERTaggedObject) data.getObjectAt(2);

      return ASN1OctetString.getInstance(o, false);
    }

    return null;
  }
  /**
   * Constructor from ASN1Sequence.
   *
   * <p>
   *
   * <p>
   *
   * <pre>
   *               ProfessionInfo ::= SEQUENCE
   *               {
   *                 namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
   *                 professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
   *                 professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
   *                 registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
   *                 addProfessionInfo OCTET STRING OPTIONAL
   *               }
   * </pre>
   *
   * @param seq The ASN.1 sequence.
   */
  private ProfessionInfo(ASN1Sequence seq) {
    if (seq.size() > 5) {
      throw new IllegalArgumentException("Bad sequence size: " + seq.size());
    }

    Enumeration e = seq.getObjects();

    DEREncodable o = (DEREncodable) e.nextElement();

    if (o instanceof ASN1TaggedObject) {
      if (((ASN1TaggedObject) o).getTagNo() != 0) {
        throw new IllegalArgumentException("Bad tag number: " + ((ASN1TaggedObject) o).getTagNo());
      }
      namingAuthority = NamingAuthority.getInstance((ASN1TaggedObject) o, true);
      o = (DEREncodable) e.nextElement();
    }

    professionItems = ASN1Sequence.getInstance(o);

    if (e.hasMoreElements()) {
      o = (DEREncodable) e.nextElement();
      if (o instanceof ASN1Sequence) {
        professionOIDs = ASN1Sequence.getInstance(o);
      } else if (o instanceof DERPrintableString) {
        registrationNumber = DERPrintableString.getInstance(o).getString();
      } else if (o instanceof ASN1OctetString) {
        addProfessionInfo = ASN1OctetString.getInstance(o);
      } else {
        throw new IllegalArgumentException("Bad object encountered: " + o.getClass());
      }
    }
    if (e.hasMoreElements()) {
      o = (DEREncodable) e.nextElement();
      if (o instanceof DERPrintableString) {
        registrationNumber = DERPrintableString.getInstance(o).getString();
      } else if (o instanceof DEROctetString) {
        addProfessionInfo = (DEROctetString) o;
      } else {
        throw new IllegalArgumentException("Bad object encountered: " + o.getClass());
      }
    }
    if (e.hasMoreElements()) {
      o = (DEREncodable) e.nextElement();
      if (o instanceof DEROctetString) {
        addProfessionInfo = (DEROctetString) o;
      } else {
        throw new IllegalArgumentException("Bad object encountered: " + o.getClass());
      }
    }
  }
 public byte[] getSalt() {
   return salt.getOctets();
 }