コード例 #1
0
  /**
   * Encode this {@link CertificateRequest} to an {@link OutputStream}.
   *
   * @param output the {@link OutputStream} to encode to.
   * @throws IOException
   */
  public void encode(OutputStream output) throws IOException {
    if (certificateTypes == null || certificateTypes.length == 0) {
      TlsUtils.writeUint8(0, output);
    } else {
      TlsUtils.writeUint8ArrayWithUint8Length(certificateTypes, output);
    }

    if (supportedSignatureAlgorithms != null) {
      // TODO Check whether SignatureAlgorithm.anonymous is allowed here
      TlsUtils.encodeSupportedSignatureAlgorithms(supportedSignatureAlgorithms, false, output);
    }

    if (certificateAuthorities == null || certificateAuthorities.isEmpty()) {
      TlsUtils.writeUint16(0, output);
    } else {
      Vector derEncodings = new Vector(certificateAuthorities.size());

      int totalLength = 0;
      for (int i = 0; i < certificateAuthorities.size(); ++i) {
        X500Name certificateAuthority = (X500Name) certificateAuthorities.elementAt(i);
        byte[] derEncoding = certificateAuthority.getEncoded(ASN1Encoding.DER);
        derEncodings.addElement(derEncoding);
        totalLength += derEncoding.length;
      }

      TlsUtils.checkUint16(totalLength);
      TlsUtils.writeUint16(totalLength, output);

      for (int i = 0; i < derEncodings.size(); ++i) {
        byte[] encDN = (byte[]) derEncodings.elementAt(i);
        output.write(encDN);
      }
    }
  }
コード例 #2
0
ファイル: OCSPStatusRequest.java プロジェクト: hiro2k/bc-java
  /**
   * Encode this {@link OCSPStatusRequest} to an {@link OutputStream}.
   *
   * @param output the {@link OutputStream} to encode to.
   * @throws IOException
   */
  public void encode(OutputStream output) throws IOException {
    if (responderIDList == null || responderIDList.isEmpty()) {
      TlsUtils.writeUint16(0, output);
    } else {
      ByteArrayOutputStream buf = new ByteArrayOutputStream();
      for (int i = 0; i < responderIDList.size(); ++i) {
        ResponderID responderID = (ResponderID) responderIDList.elementAt(i);
        byte[] derEncoding = responderID.getEncoded(ASN1Encoding.DER);
        TlsUtils.writeOpaque16(derEncoding, buf);
      }
      TlsUtils.checkUint16(buf.size());
      TlsUtils.writeUint16(buf.size(), output);
      buf.writeTo(output);
    }

    if (requestExtensions == null) {
      TlsUtils.writeUint16(0, output);
    } else {
      byte[] derEncoding = requestExtensions.getEncoded(ASN1Encoding.DER);
      TlsUtils.checkUint16(derEncoding.length);
      TlsUtils.writeUint16(derEncoding.length, output);
      output.write(derEncoding);
    }
  }