GithubHelp home page GithubHelp logo

rethinkdb / rethinkdb-java Goto Github PK

View Code? Open in Web Editor NEW
21.0 8.0 10.0 1.83 MB

Official RethinkDB Java client

Home Page: https://rethinkdb.com/api/java/

License: Apache License 2.0

Python 4.44% Java 94.86% Kotlin 0.69%

rethinkdb-java's Introduction

RethinkDB Java Driver

Maven Central Bintray License Travis-CI.org Twitter

This is the official RethinkDB client driver for Java and other JVM languages.

The driver has official docs that you can read at the RethinkDB documentation.

What changed in Version 2.4.1?

This version is full of breaking changes, and is equivalent to a major release, but being compatible with RethinkDB v2.4.0

Please read the release notes for v2.4.1 to know what changed.

Building from source

To build from source you just need JDK 8 or greater.

Run ./gradlew assemble to build the jar or ./gradlew install to install it into your local maven repository.

Contributing to the driver

If you want to contribute to the driver, make sure to base your branch off of our develop branch (or a feature-branch) and create your PR into that same branch. We will be rejecting any PRs between branches or into release branches! It is very possible that your change might already be in development or you missed something.

Installation

Besides JDK 8, to be able to contribute to the driver, you must also install:

  • Python 3.6 or 3.7
  • PIP3 libraries:
    • mako
    • rethinkdb

Using Gradle

Gradle has some special tasks that help you managing the driver, such as downloading sources from the main repository.

You can invoke any task by running ./gradlew taskName (or gradlew.bat in Windows) and get a list of tasks by running ./gradlew tasks

Task Description
downloadProtoAndTests Downloads the proto file and the YAML test files into the repository.
generateJsonFiles Using the downloaded proto file, rgenerates the required JSON files for java file generation.
genMainJava* Using all the JSON files, regenerates the files on the com.rethinkdb.gen package at src/main/java
genTestJava Using the downloaded YAML test files, regenerates the tests on the com.rethinkdb.gen package at src/test/java

[*] Currently, genMainJava task is enabled only for local files because the generatedJsonFiles python scripts are generating invalid JSON files.

To setup your environiment to be able to generate driver classes and test files, run the downloadProtoAndTests and generateJsonFiles tasks.

Basics

The build process runs a python script (metajava.py) that automatically generates the required Java classes for reql terms. The process looks like this:

metajava.py creates:

ql2.proto -> proto_basic.json ---+
        |                        |
        |                        v
        +--> term_info.json -> build/java_term_info.json
                                 |
                                 v
global_info.json ------------> templates/ -> src/main/java/com/rethinkdb/gen/ast/{Term}.java
                                       |
                                       +---> src/main/java/com/rethinkdb/gen/proto/{ProtocolType}.java
                                       +---> src/main/java/com/rethinkdb/gen/model/TopLevel.java
                                       +---> src/main/java/com/rethinkdb/gen/exc/Reql{Exception}Error.java

Generally, you won't need to use metajava.py if you only want to build the current driver, since all generated files are checked into git. Only if you want to modify the templates in templates/ will you need python3, rethinkdb (python package) and mako (python package) installed.

If you're building the java driver without changing the template files, you can simply do:

$ ./gradlew assemble
# or if you want to run tests as well
$ ./gradlew build

This will create the .jar files in build/libs.

Testing

Tests are created from the polyglot yaml tests located in the rethinkdb github repository's test/rql_test/src/ directory. To get the polyglot yaml tests, run the Gradle task downloadProtoAndTests. Gradle will checkout the tests into build/rethinkdb_gen.

The genTestJava task is used to run the test conversion, which requires python3 and the above listed python dependencies. It will output JUnit test files into src/test/java/com/rethinkdb/gen, using process_polyglot.py and convert_tests.py. These are also checked into git, so you don't need to run the conversion script if you just want to verify that the existing tests pass.

process_polyglot.py is intended to be independent of the java driver, and only handles reading in the polyglot tests and normalizing them into a format that's easier to use to generate new tests from.

TL;DR: process_polyglot.py doesn't have the word "java" anywhere in it, while convert_tests.py has all of the java specific behavior in it and builds on top of the stream of test definitions that process_polyglot.py emits.

Deploying a release or snapshot

This section was moved to separate documentation:

How to deploy this repository to Bintray with integration with Maven Central (Sonatype)

rethinkdb-java's People

Contributors

bchavez avatar crockpotveggies avatar dandc87 avatar danielcompton avatar deontologician avatar dwiechert avatar eric-poitras avatar finnbock avatar gabor-boros avatar igorlukanin avatar iorlas1 avatar jjqq2013 avatar lenstr avatar lyubomyr-shaydariv avatar pires avatar rocketraman avatar scarsz avatar srh avatar vexocide avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rethinkdb-java's Issues

Write more tests

Write a new file to unit test all the new stuff.

Includes, but not limited to:

  • Validate Types.mapOf(K, V) against new TypeReference<Map<K, V>>, as well as other cases.
  • Tests for all run methods, as well as runAsync ones.
  • Test unwrapLists behaviour as well as consistency.
  • Test correctly for Result<T> methods, as well as auto-closing behaviour.
  • Add tests for db-urls.

Problems with the Python scripts toolchain

After having to deal with Python scripts (See #10), it became clear that some (if not all) scripts should be re-engineered.

I'm opening this issue to discuss about what approach we can go to fix it. I mapped out a few available paths:

1. Rewrite the current Python scripts

This would be the easier, as it's just re-engineering the current Python scripts. But it'd require help from other contributors to do.

2. Write a new toolchain in a JVM scripting language.

This would make the job easier for the Java developers... if we can all agree between Groovy, KotlinScript, JavaScript (Rhino, Nashorn, GraalVM), Scala, Lua (LuaJ, Cobalt), Python (Jython), etc... as the scripting language for the toolchain. It'd require a bit more time to port Python to it.

3. Write a new toolchain as a Gradle plugin.

Hey, people at MinecraftForge, Sponge and FabricMC did it already. We can implement the toolchain as a separate Gradle plugin. It'd be the most effort, since we'd need a separate repository to maintain the Gradle plugin and fixes would most likely take hours instead of minutes, but it'd give out the best user experience.

4. Port it to another different language at all.

The last alternative would be porting it to a different language that most core RethinkDB developers could help, such as JavaScript (for example, running on Node.js). This option could take as much time as option 2 or 3, but fixes would most likely be made by pretty much any RethinkDB maintainer.

Updated Documentation?

Is your feature request related to a problem? Please describe.

The documentation on https://rethinkdb.com/api/java/ seems to be out of date with v2.4.1? None of the return types seem to be correct.

For example, https://rethinkdb.com/api/java/db_list says .dbList() returns an array but in practice seems to return a Result<Object>? The Result class also seems undocumented:

Result<Object> dbList = r.dbList().run(dbConn);

The documentation also says that .toJson should return a String https://rethinkdb.com/api/java/to_json_string/#wrapper --In practice this method also returns a seems to return a Result<Object>?

There doesn't seem to be any examples or documentation on how to handle a Result<Object> or covert it to the types the documentation says should be returned. I can tell the class does contain the data I'm looking for using %s but there doesn't seem to be any documented way to access that data.

help me fix this program : ReqlDriverError: Response pump closed

I am learning rethinkdb and I get the following error. After I started my application, I could add the record to table success, but after 15/20 minutes later, if I add the record, the error :
c.r.g.e.ReqlDriverError: Response pump closed. at c.r.n.DefaultConnectionFactory$ThreadResponsePump.await(DefaultConnectionFactory.java:214) at c.r.net.Connection.sendQuery(Connection.java:349) at c.r.net.Connection.runQuery(Connection.java:384) at c.r.net.Connection.runAsync(Connection.java:166) at c.r.net.Connection.run(Connection.java:185).

My code here:

@Override
public void run () {
    while (true) {
        try {
            logger.info ("START RETHINKDB & CHANGEFEED");
            conn = r.connection ()
                    .hostname (configParam.hostRethink)
                    .port (configParam.portRethink)
                    .db (configParam.dbRethink)
                    .user (configParam.userRethink, configParam.passRethink)
                    .connect ();

            // Changefeeds: subscribe to a feed by calling changes on a table
            Result <Object> result = r.table ("order")
                    .filter (
                            new ReqlFunction1 () {
                                @Override
                                public Object apply (ReqlExpr row) {
                                    return row.g ("status"). eq ("APPROVED");
                                }
                            }). changes (). optArg ("include_types", true) .run (conn);
            for (Object change: result) {
                logger.info (change.toString ());
                superMarketService.updateApprovedSuperMarketOrder (change);
            }
            logger.info ("END RETHINKDB & CHANGEFEED SUCCESS");
        } catch (Exception e) {
            e.printStackTrace ();
        }
    }
}

public void addOrder (JSONSuperMarket json) {
    if (conn == null) {
        logger.error ("=============== RETHINK DIE =========");
    }

    Result <Object> result = r.table ("order"). Insert (r.array (
            r.hashMap ("order_code", json.getOrderCode ())
                    .with ("cash_id", json.getCashId ())
                    .with ("merchant_id", json.getMerchantId ())
                    .with ("amount", json.getAmount ())
                    .with ("status", "PENDING")
                    .with ("description", json.getDescription ())
                    .with ("created_date", r.now (). inTimezone ("+ 07:00"). toIso8601 ())
    )). run (conn);
    logger.info (result.toString ());
}

Is there any error in my code, pls help me :(
I use Java 8 + RethinkDb 2.4.2.

Unable to connect with TLS enabled starting from version 2.4.2

Describe the bug
A clear and concise description of what the bug is.
I am unable to estabish a TLS connection, neither with .certpath nor .sslContext, starting from version 2.4.2.
Version 2.4.1 works without problems

To Reproduce
Steps to reproduce the behavior:

  1. TODO
  • Create a self-signed certificate on RethinkDB server, add it to client's trust store, then

private SSLContext initializeSSLContext(RethinkSinkConfig config) throws KeyStoreException,NoSuchAlgorithmException, CertificateException, IOException, KeyManagementException {
KeyStore keyStore = loadCertificate(config.getCertpath());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
return sslContext;
}
private KeyStore loadCertificate(String certPath) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException {
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null, null); // Initialize KeyStore

    try (FileInputStream certInputStream = new FileInputStream(certPath)) {
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        X509Certificate caCert = (X509Certificate) cf.generateCertificate(certInputStream);
        keyStore.setCertificateEntry("caCert", caCert);
    } catch (FileNotFoundException e) {
        log.log(Level.SEVERE, "Certificate file not found at " + certPath, e);
        throw e;
    } catch (CertificateException | IOException e) {
        log.log(Level.SEVERE, "Error loading certificate from " + certPath, e);
        throw e;
    }
    return keyStore;

}

SSLContext sslContext = initializeSSLContext(config);
Connection connection = r.connection()
.hostname(config.getHost())
.port(config.getPort())
.db(config.getDb())
.user(config.getUsername(), config.getPassword())
.sslContext(sslContext)
// .certFile(certStream)
.connect();

Expected behavior
A clear and concise description of what you expected to happen.
Java client shall connect. It does not. No exceptions are thrown. Same with .certFile(certStream) option.
Code works as expected up to 2.4.1

System info
RethinkDB Version: 2.4.3
openjdk 17.0.7 2023-04-18
OpenJDK Runtime Environment (build 17.0.7+7-Ubuntu-0ubuntu118.04)
OpenJDK 64-Bit Server VM (build 17.0.7+7-Ubuntu-0ubuntu118.04, mixed mode, sharing)

Make .optArgs(...) nicer

This issue is a continuation of rethinkdb/rethinkdb#5184

From the original issue:

Currently we just have a two argument chainable method for optargs:

between(3, 100).optArg("left_bound", "open").optArg("right_bound", "closed")

But we actually can do better than this since we have all of the optarg names and types listed in global_info.json, I believe it would be possible to do something along the lines of:

between(3, 100, Optarg.of<>()
    .leftBound(Bound.OPEN)
    .rightBound(Bound.CLOSED))

Pros:

1. Optargs can be checked at compile time

2. Syntax is a bit better than chaining `.optArg` a bunch of times

3. Better syntax for lambdas provided to optargs.

[...] I think in general the java community is in favor of stronger typing and this is a place I think it's tractable to provide stronger typing. The number of optargs is enumerable and they don't (currently) allow a reql term to dynamically evaluate their value

[...]

Another developer's reply:

The contra argument for doing this is that we will need to maintain the list of supported optargs in the future.

I have a slight preference for keepings the optarg syntax the same it is now, and not introducing specific methods for the different optional arguments.

It seems that optArgs functions are implemented in v2.4.0.

I'm neutral on this issue, and encourage discussing regarding whether this is feasable and doable or not.

This issue also relates to #11 because it would need modifying the python scripts.

Generate documentation on classes

By tinkering with the Python scripts to add an extra field, which may exists but I don't seem to find, which is the original, snake-case name, the following can be generated in the top-model:

public class TopModel {
    [...]

    /**
     * See <a href="https://rethinkdb.com/api/java/epoch_time">https://rethinkdb.com/api/java/epoch_time</a>
     * for specific documentation.
     */
    public EpochTime epochTime(Object expr) {
        Arguments args = new Arguments();
        args.coerceAndAdd(expr);
        return new EpochTime(args);
    }

    [...]
}

And in the object itself:

/**
 * See <a href="https://rethinkdb.com/api/java/epoch_time">https://rethinkdb.com/api/java/epoch_time</a>
 * for specific documentation.
 */
public class EpochTime extends ReqlExpr {

    public EpochTime(Object arg) {
        this(new Arguments(arg), null);
    }
    public EpochTime(Arguments args){
        this(args, null);
    }
    public EpochTime(Arguments args, OptArgs optargs) {
        super(TermType.EPOCH_TIME, args, optargs);
    }

}

Implement pretty-printing ReQL AST

This issue is a continuation of rethinkdb/rethinkdb#5012

Implement ReQL AST printing. It is fairly easy.

Base code (taken from Avarel/Kaiper:Kaiper-AST/xyz.avarel.kaiper.ast.Expr, Apache-2.0 License)

    public void ast(StringBuilder builder, String indent, boolean isTail) {
        builder.append(indent).append(isTail ? "└── " : "├── ").append(toString());
    }

    public void ast(String label, StringBuilder builder, String indent, boolean tail) {
        builder.append(indent).append(tail ? "└── " : "├── ").append(label).append(':');

        builder.append('\n');
        ast(builder, indent + (tail ? "    " : "│   "), true);
    }

Could not generate secret key

I'm using the unofficial 2.4 for Windows and try to connect from an Android-app using the Java-driver. All via ddns.net/DUC with forwarded ports.

On the client side I launch it using Dispatchers.IO as context for the Couritine, so that the network operation won't happen on the main thread.

import com.rethinkdb.RethinkDB;
import com.rethinkdb.net.Connection;
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import com.rethinkdb.gen.exc.ReqlError;

//... a normal Fragment or Activity

val scope = rememberCoroutineScope() //used in Jetpack Compose for more or less local scopes
val r = RethinkDB.r

scope.launch(Dispatchers.IO) {
    try{
        r.connection().hostname("my-ddns.net-link-goes-here").port(28015).connect()
    }catch (e: ReqlError){
        Log.w("myFragment", "ERR: $e")
    }
}

Trying to establish a connection results in:

com.rethinkdb.gen.exc.ReqlDriverError: java.security.spec.InvalidKeySpecException: Could not generate secret key

What exactly causes this?
Any way to resolve it?

More Run Helpers

Implement Run Helpers other than runAsync, like the ones provided by the RethinkDB C# Driver, as well as run*Async variances of them.

Suggested Run Helpers:

  • runAtom<T>: Returns the atom value, possibly converted, or throws if not an atom
  • runGrouping<K, V>: Same as runAtom but the result of the grouping operation is converted to Map<K, List<V>>
  • runUnwrapping: Forces unwrapLists behaviour.

Implement r.pathspec(...)

This issue is a continuation of rethinkdb/rethinkdb#5007

Implement the discussed at the issue.

From the original issue:

Right now pathspecs are kind hairy due to Java's lack of nice hashmap and List literals:

in javascript:

r.table('foo').filter({x: {y: {z: "bar"}}})

turns into the java query:

r.table("foo").filter(r.hashMap("x", r.hashMap("y", r.hashMap("z", "bar"))))

Since depth-first is more common in path-specs than breadth first, it might make sense to have a special r.pathspec convenience that creates the appropriate hashmap structure. It might look something like:

r.table("foo").filter(r.pathspec("x", "y", "z", "bar"))

I haven't really thought about branching pathspecs too much, maybe there's no syntax that would work well. It's something to think about.

Question about Reql DateTime

Hi all,
I have a field "create_date", show me how to get the data where "create_date" before 10 minutes ago.
Many tks!

"Can't write query because response pump is not running" after updating to 2.3.6

Basically, I'm running an application which requires rethinkdb, and I have it started as a service on my server, but, when I try to run it, after a while of around ~500-1300 reads/second it just starts going "Can't write query because response pump is not running" and kills the entire application.
I cannot seem to find the logs for rethinkdb anywhere. I started it with init.d, so I don't know what might cause this, or where the logs are.

I would appreciate further assistance, since it worked perfectly on 2.3.5
By the way, I'm using the latest java driver (2.3.3)

Unable to reconnect with server after 2.4.1 update

Describe the bug
As of version 2.4.1 (and up to 2.4.4 of time of writing) the Connection.reconnect() method no longer works.

To Reproduce
Simplified version of our code:

while(true){
  if (!connection.isOpen()){
    connection.reconnect(false);
  }

Expected behavior
There are 2 bugs in the code:

  1. the connect method fails because the socket field is never set to null so the connectAsync call will always fail.

    public @NotNull CompletableFuture<Connection> connectAsync() {
    if (socket != null) {
    throw new ReqlDriverError("Client already connected!");
    }

  2. The reconnect method must be given a value of false. If a value of true is used a query is attempted that will fail because it has no active connection.

    protected @NotNull CompletableFuture<Response> sendQuery(@NotNull Query query) {
    if (socket == null || !socket.isOpen()) {
    throw new ReqlDriverError("Client not connected.");
    }

How to connect to cluster with 3 nodes.

I am using three nodes in rethinkdb and using java client to connect to cluster but not getting any example of documentation to connect to cluster with 3 IP.

TLS connection hangs during handshake

Describe the bug
Trying to connect to a rethinkdb instance using ssl, the connection hangs and the handshake does not complete

To Reproduce
Steps to reproduce the behavior:

  1. Generate a self signed certificate
    cd /etc/rethinkdb
    openssl genrsa -out rethinkkey.pem 2048
    openssl req -new -x509 -key rethinkkey.pem -out rethinkcert.pem -days 3650

  2. Configure rethinkdb to start with the pem files

http-tls-key=/etc/rethinkdb/rethinkkey.pem
http-tls-cert=/etc/rethinkdb/rethinkcert.pem
driver-tls-key=/etc/rethinkdb/rethinkkey.pem
driver-tls-cert=/etc/rethinkdb/rethinkcert.pem

  1. Connect to the db instance from your java program
    RethinkDB r = RethinkDB.r;
    Connection c = r.connection().hostname(host).port(port).db(db).certFile(new File(certPem)).timeout(10000L).connect();

Expected behavior
The connection object is obtained and the process doesnt hang

Screenshots
attaching ssl log

System info

  • OS: Ubuntu bionic
  • RethinkDB Version: [2.4.3]

Additional context
adding as trusted cert:
Subject: CN=somewebsite.com, OU=IT, O=some website, L=London, ST=London, C=GB
Issuer: CN=somewebsite.com, OU=IT, O=some website, L=London, ST=London, C=GB
Algorithm: RSA; Serial number: 0x124482eb7c3cdbfec8ccf8e1235c5d95ba491d38
Valid from Mon Jun 15 13:11:43 BST 2020 until Thu Jun 13 13:11:43 BST 2030

System property jdk.tls.client.cipherSuites is set to 'null'
System property jdk.tls.server.cipherSuites is set to 'null'
Ignoring disabled cipher suite: TLS_DH_anon_WITH_AES_256_CBC_SHA
Ignoring disabled cipher suite: TLS_DH_anon_WITH_AES_256_CBC_SHA256
Ignoring disabled cipher suite: TLS_ECDHE_RSA_WITH_NULL_SHA
Ignoring disabled cipher suite: SSL_RSA_WITH_DES_CBC_SHA
Ignoring disabled cipher suite: SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
Ignoring disabled cipher suite: TLS_KRB5_WITH_DES_CBC_MD5
Ignoring disabled cipher suite: TLS_ECDH_RSA_WITH_NULL_SHA
Ignoring disabled cipher suite: SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
Ignoring disabled cipher suite: SSL_DH_anon_WITH_DES_CBC_SHA
Ignoring disabled cipher suite: TLS_DH_anon_WITH_AES_128_CBC_SHA
Ignoring disabled cipher suite: TLS_KRB5_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_KRB5_WITH_DES_CBC_SHA
Ignoring disabled cipher suite: TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5
Ignoring disabled cipher suite: TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
Ignoring disabled cipher suite: SSL_DHE_RSA_WITH_DES_CBC_SHA
Ignoring disabled cipher suite: TLS_KRB5_WITH_3DES_EDE_CBC_MD5
Ignoring disabled cipher suite: SSL_DH_anon_WITH_RC4_128_MD5
Ignoring disabled cipher suite: TLS_ECDHE_ECDSA_WITH_NULL_SHA
Ignoring disabled cipher suite: SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_RSA_WITH_NULL_SHA256
Ignoring disabled cipher suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_anon_WITH_NULL_SHA
Ignoring disabled cipher suite: SSL_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_anon_WITH_RC4_128_SHA
Ignoring disabled cipher suite: SSL_DHE_DSS_WITH_DES_CBC_SHA
Ignoring disabled cipher suite: TLS_KRB5_EXPORT_WITH_RC4_40_SHA
Ignoring disabled cipher suite: SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
Ignoring disabled cipher suite: TLS_KRB5_WITH_RC4_128_SHA
Ignoring disabled cipher suite: TLS_ECDH_anon_WITH_AES_256_CBC_SHA
Ignoring disabled cipher suite: SSL_RSA_EXPORT_WITH_RC4_40_MD5
Ignoring disabled cipher suite: TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA
Ignoring disabled cipher suite: TLS_KRB5_EXPORT_WITH_RC4_40_MD5
Ignoring disabled cipher suite: TLS_ECDH_anon_WITH_AES_128_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_ECDSA_WITH_RC4_128_SHA
Ignoring disabled cipher suite: TLS_KRB5_WITH_RC4_128_MD5
Ignoring disabled cipher suite: TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_RSA_WITH_RC4_128_SHA
Ignoring disabled cipher suite: TLS_ECDH_ECDSA_WITH_NULL_SHA
Ignoring disabled cipher suite: TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_RSA_WITH_RC4_128_SHA
Ignoring disabled cipher suite: SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
Ignoring disabled cipher suite: SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_RSA_WITH_NULL_SHA
Ignoring disabled cipher suite: TLS_ECDHE_RSA_WITH_RC4_128_SHA
Ignoring disabled cipher suite: SSL_RSA_WITH_RC4_128_MD5
Ignoring disabled cipher suite: TLS_DH_anon_WITH_AES_128_CBC_SHA256
Ignoring disabled cipher suite: SSL_RSA_WITH_NULL_MD5
Ignoring disabled cipher suite: TLS_DH_anon_WITH_AES_128_GCM_SHA256
Ignoring disabled cipher suite: TLS_DH_anon_WITH_AES_256_GCM_SHA384
Ignoring disabled cipher suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
Ignoring disabled cipher suite: SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
trigger seeding of SecureRandom
done seeding SecureRandom
%% Initialized: [Session-1, SSL_NULL_WITH_NULL_NULL]
Allow unsafe renegotiation: false
Allow legacy hello messages: true
Is initial handshake: true
Is secure renegotiation: false
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1
Ignoring unsupported cipher suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 for TLSv1.1
Ignoring unsupported cipher suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 for TLSv1.1
Ignoring unsupported cipher suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 for TLSv1.1
%% No cached client session
update handshake state: client_hello[1]
upcoming handshake states: server_hello[2]
*** ClientHello, TLSv1.2
RandomCookie: GMT: 1575450637 bytes = { 199, 166, 106, 240, 220, 176, 227, 241, 60, 74, 152, 61, 233, 250, 232, 145, 55, 212, 127, 82, 252, 241, 182, 160, 123, 87, 73, 205 }
Session ID: {}
Cipher Suites: [TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_DSS_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_DSS_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_DSS_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_DSS_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_DSS_WITH_AES_128_GCM_SHA256, TLS_EMPTY_RENEGOTIATION_INFO_SCSV]
Compression Methods: { 0 }
Extension elliptic_curves, curve names: {secp256r1, secp384r1, secp521r1}
Extension ec_point_formats, formats: [uncompressed]
Extension signature_algorithms, signature_algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA256withDSA, SHA224withECDSA, SHA224withRSA, SHA224withDSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA
Extension extended_master_secret


[write] MD5 and SHA1 hashes: len = 185
0000: 01 00 00 B5 03 03 5E E7 78 0D C7 A6 6A F0 DC B0 ......^.x...j...
0010: E3 F1 3C 4A 98 3D E9 FA E8 91 37 D4 7F 52 FC F1 ..<J.=....7..R..
0020: B6 A0 7B 57 49 CD 00 00 56 C0 24 C0 28 00 3D C0 ...WI...V.$.(.=.
0030: 26 C0 2A 00 6B 00 6A C0 0A C0 14 00 35 C0 05 C0 &..k.j.....5...
0040: 0F 00 39 00 38 C0 23 C0 27 00 3C C0 25 C0 29 00 ..9.8.#.'.<.%.).
0050: 67 00 40 C0 09 C0 13 00 2F C0 04 C0 0E 00 33 00 g.@...../.....3.
0060: 32 C0 2C C0 2B C0 30 00 9D C0 2E C0 32 00 9F 00 2.,.+.0.....2...
0070: A3 C0 2F 00 9C C0 2D C0 31 00 9E 00 A2 00 FF 01 ../...-.1.......
0080: 00 00 36 00 0A 00 08 00 06 00 17 00 18 00 19 00 ..6.............
0090: 0B 00 02 01 00 00 0D 00 1C 00 1A 06 03 06 01 05 ................
00A0: 03 05 01 04 03 04 01 04 02 03 03 03 01 03 02 02 ................
00B0: 03 02 01 02 02 00 17 00 00 .........
ForkJoinPool.commonPool-worker-1, WRITE: TLSv1.2 Handshake, length = 185
[Raw write]: length = 190
0000: 16 03 03 00 B9 01 00 00 B5 03 03 5E E7 78 0D C7 ...........^.x..
0010: A6 6A F0 DC B0 E3 F1 3C 4A 98 3D E9 FA E8 91 37 .j.....<J.=....7
0020: D4 7F 52 FC F1 B6 A0 7B 57 49 CD 00 00 56 C0 24 ..R.....WI...V.$
0030: C0 28 00 3D C0 26 C0 2A 00 6B 00 6A C0 0A C0 14 .(.=.&.
.k.j....
0040: 00 35 C0 05 C0 0F 00 39 00 38 C0 23 C0 27 00 3C .5.....9.8.#.'.<
0050: C0 25 C0 29 00 67 00 40 C0 09 C0 13 00 2F C0 04 .%.).g.@...../..
0060: C0 0E 00 33 00 32 C0 2C C0 2B C0 30 00 9D C0 2E ...3.2.,.+.0....
0070: C0 32 00 9F 00 A3 C0 2F 00 9C C0 2D C0 31 00 9E .2...../...-.1..
0080: 00 A2 00 FF 01 00 00 36 00 0A 00 08 00 06 00 17 .......6........
0090: 00 18 00 19 00 0B 00 02 01 00 00 0D 00 1C 00 1A ................
00A0: 06 03 06 01 05 03 05 01 04 03 04 01 04 02 03 03 ................
00B0: 03 01 03 02 02 03 02 01 02 02 00 17 00 00 ..............
[Raw read]: length = 5
0000: 16 03 03 00 5D ....]
[Raw read]: length = 93
0000: 02 00 00 59 03 03 9A 2B 40 58 EF 32 9D 72 DC 1E [email protected]..
0010: B4 CE 33 56 FA CE 96 89 F2 A2 6F F6 AB 61 44 4F ..3V......o..aDO
0020: 57 4E 47 52 44 01 20 DE 4C EC A4 61 30 5A 93 04 WNGRD. .L..a0Z..
0030: 5A 82 87 E9 02 DE B3 F2 83 09 37 D9 82 26 EB AA Z.........7..&..
0040: 90 88 2E C2 29 29 3F C0 30 00 00 11 FF 01 00 01 ....))?.0.......
0050: 00 00 0B 00 04 03 00 01 02 00 17 00 00 .............
ForkJoinPool.commonPool-worker-1, READ: TLSv1.2 Handshake, length = 93
check handshake state: server_hello[2]
*** ServerHello, TLSv1.2
RandomCookie: GMT: -1708441512 bytes = { 239, 50, 157, 114, 220, 30, 180, 206, 51, 86, 250, 206, 150, 137, 242, 162, 111, 246, 171, 97, 68, 79, 87, 78, 71, 82, 68, 1 }
Session ID: {222, 76, 236, 164, 97, 48, 90, 147, 4, 90, 130, 135, 233, 2, 222, 179, 242, 131, 9, 55, 217, 130, 38, 235, 170, 144, 136, 46, 194, 41, 41, 63}
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Compression Method: 0
Extension renegotiation_info, renegotiated_connection:
Extension ec_point_formats, formats: [uncompressed, ansiX962_compressed_prime, ansiX962_compressed_char2]
Extension extended_master_secret


%% Initialized: [Session-2, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384]
** TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
update handshake state: server_hello[2]
upcoming handshake states: server certificate[11]
upcoming handshake states: server_key_exchange12
upcoming handshake states: certificate_request13
upcoming handshake states: server_hello_done[14]
upcoming handshake states: client certificate11
upcoming handshake states: client_key_exchange[16]
upcoming handshake states: certificate_verify15
upcoming handshake states: client change_cipher_spec[-1]
upcoming handshake states: client finished[20]
upcoming handshake states: server change_cipher_spec[-1]
upcoming handshake states: server finished[20]
[read] MD5 and SHA1 hashes: len = 93
0000: 02 00 00 59 03 03 9A 2B 40 58 EF 32 9D 72 DC 1E [email protected]..
0010: B4 CE 33 56 FA CE 96 89 F2 A2 6F F6 AB 61 44 4F ..3V......o..aDO
0020: 57 4E 47 52 44 01 20 DE 4C EC A4 61 30 5A 93 04 WNGRD. .L..a0Z..
0030: 5A 82 87 E9 02 DE B3 F2 83 09 37 D9 82 26 EB AA Z.........7..&..
0040: 90 88 2E C2 29 29 3F C0 30 00 00 11 FF 01 00 01 ....))?.0.......
0050: 00 00 0B 00 04 03 00 01 02 00 17 00 00 .............
[Raw read]: length = 5
0000: 16 03 03 03 CD .....
[Raw read]: length = 973
0000: 0B 00 03 C9 00 03 C6 00 03 C3 30 82 03 BF 30 82 ..........0...0.
0010: 02 A7 A0 03 02 01 02 02 14 12 44 82 EB 7C 3C DB ..........D...<.
0020: FE C8 CC F8 E1 23 5C 5D 95 BA 49 1D 38 30 0D 06 .....#]..I.80..
0030: 09 2A 86 48 86 F7 0D 01 01 0B 05 00 30 6F 31 0B ..H........0o1.
0040: 30 09 06 03 55 04 06 13 02 47 42 31 0F 30 0D 06 0...U....GB1.0..
0050: 03 55 04 08 0C 06 4C 6F 6E 64 6F 6E 31 0F 30 0D .U....London1.0.
0060: 06 03 55 04 07 0C 06 4C 6F 6E 64 6F 6E 31 16 30 ..U....London1.0
0070: 14 06 03 55 04 0A 0C 0D 53 70 65 63 69 61 6C 20 ...U....some
0080: 53 74 75 66 66 31 0B 30 09 06 03 55 04 0B 0C 02 we1.0...U....
0090: 49 54 31 19 30 17 06 03 55 04 03 0C 10 73 70 65 IT1.0...U....spe
00A0: 63 69 61 6C 73 74 75 66 66 2E 63 6F 6D 30 1E 17 cialwe.com0..
00B0: 0D 32 30 30 36 31 35 31 32 31 31 34 33 5A 17 0D .200615121143Z..
00C0: 33 30 30 36 31 33 31 32 31 31 34 33 5A 30 6F 31 300613121143Z0o1
00D0: 0B 30 09 06 03 55 04 06 13 02 47 42 31 0F 30 0D .0...U....GB1.0.
00E0: 06 03 55 04 08 0C 06 4C 6F 6E 64 6F 6E 31 0F 30 ..U....London1.0
00F0: 0D 06 03 55 04 07 0C 06 4C 6F 6E 64 6F 6E 31 16 ...U....London1.
0100: 30 14 06 03 55 04 0A 0C 0D 53 70 65 63 69 61 6C 0...U....some
0110: 20 53 74 75 66 66 31 0B 30 09 06 03 55 04 0B 0C we1.0...U...
0120: 02 49 54 31 19 30 17 06 03 55 04 03 0C 10 73 70 .IT1.0...U....sp
0130: 65 63 69 61 6C 73 74 75 66 66 2E 63 6F 6D 30 82 ecialwe.com0.
0140: 01 22 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 ."0...
.H.......
0150: 00 03 82 01 0F 00 30 82 01 0A 02 82 01 01 00 FC ......0.........
0160: CB 5A C2 81 03 A3 6A 36 97 67 FE 71 05 D1 9F F3 .Z....j6.g.q....
0170: 49 90 B0 60 98 B5 C1 C0 11 ED 2D 81 9F 1E 0D E0 I..`......-.....
0180: 61 A5 F8 30 81 49 62 1A 6C 99 7F FC 6D 5C AE 0D a..0.Ib.l...m..
0190: E8 12 0D BF D6 7A 3F 8A 83 4E 22 52 D8 BC BF A6 .....z?..N"R....
01A0: AB 42 A2 1C 0D 4C F7 A2 2D 84 35 69 DC D4 1B 2D .B...L..-.5i...-
01B0: 6A A6 F5 81 9E 9F 29 06 FC 73 6F 2D 81 F1 40 81 j.....)..so-..@.
01C0: B5 EC F1 8C 08 BE 57 8B 2A B0 19 E7 F2 B6 4D 64 ......W......Md
01D0: B3 01 81 1F 4B 74 97 F9 CD 01 AF FF 6D FF 15 DC ....Kt......m...
01E0: C1 31 6B 87 E2 43 0E D6 70 6F F5 EE DD 97 17 18 .1k..C..po......
01F0: 5A DC 10 70 07 E5 A5 A5 63 9F 42 10 5F F4 3D F9 Z..p....c.B..=.
0200: 81 6D C1 DF 79 C9 84 10 F3 F8 7B D9 53 22 19 D1 .m..y.......S"..
0210: BB 56 7A 3B CA E4 F7 9B E4 9E 57 E7 54 0E F9 D3 .Vz;......W.T...
0220: 43 0D 57 23 E5 06 35 F5 34 16 45 A3 4A 87 5F 5D C.W#..5.4.E.J.
]
0230: 97 5F 79 B9 3F 40 F2 F8 1B 2A 3C 0B AB AC B8 A7 ._y.?@...
<.....
0240: 18 33 44 21 71 B4 6F BA 16 30 E8 FE D1 45 4C A0 .3D!q.o..0...EL.
0250: 4E 85 C9 9C E0 92 4B 54 56 94 56 02 80 C2 61 02 N.....KTV.V...a.
0260: 03 01 00 01 A3 53 30 51 30 1D 06 03 55 1D 0E 04 .....S0Q0...U...
0270: 16 04 14 04 83 D9 E3 91 34 2C 41 FF D6 AB 2F ED ........4,A.../.
0280: 37 A1 D7 29 44 47 99 30 1F 06 03 55 1D 23 04 18 7..)DG.0...U.#..
0290: 30 16 80 14 04 83 D9 E3 91 34 2C 41 FF D6 AB 2F 0........4,A.../
02A0: ED 37 A1 D7 29 44 47 99 30 0F 06 03 55 1D 13 01 .7..)DG.0...U...
02B0: 01 FF 04 05 30 03 01 01 FF 30 0D 06 09 2A 86 48 ....0....0....H
02C0: 86 F7 0D 01 01 0B 05 00 03 82 01 01 00 9A CA EC ................
02D0: 29 E9 2F 0A CE 58 52 6E 46 F8 35 A6 E2 F0 AA 91 )./..XRnF.5.....
02E0: 80 D3 13 DF 69 10 8E 06 82 B8 03 95 B4 42 CF 07 ....i........B..
02F0: D8 BE 38 7C 19 D5 55 D1 08 AF 37 6A 92 FE 40 02 ..8...U...7j..@.
0300: 43 08 84 B0 EE 81 E7 7C 08 8D 61 F3 F9 D7 BF FC C.........a.....
0310: FE 54 F6 7D B8 EA 53 2C 23 4F 9B EA 85 6C 79 00 .T....S,#O...ly.
0320: F4 AE 79 52 24 3C A9 8D C0 EC B8 82 1D 89 92 C4 ..yR$<..........
0330: 6C 9C CB C0 4D 92 A2 9E EC 8B AD A0 14 8C 59 E9 l...M.........Y.
0340: F2 4B 7C 02 A1 A0 63 C9 AB 0B A6 3D 1A 50 0E 1B .K....c....=.P..
0350: C9 49 1F 33 3C 6F C8 43 D8 82 5C 47 F2 9E 9C 7A .I.3<o.C..\G...z
0360: 6E B8 8E 53 6F 65 99 BE 30 E8 58 DD CD 9F F4 F4 n..Soe..0.X.....
0370: EA 51 8F 70 14 A2 34 DD AE 56 B9 1D F3 6B 42 E9 .Q.p..4..V...kB.
0380: D3 20 19 43 F4 DE 04 2A B1 38 0A 40 AC 8C 1F 34 . .C...
[email protected]
0390: 1A 49 A4 2C 11 42 98 68 FA A6 C9 52 86 D5 C5 A6 .I.,.B.h...R....
03A0: CD A2 CA CA 99 23 24 F2 58 8A B7 01 E4 2C 45 FB .....#$.X....,E.
03B0: 8D 97 8F AB B2 DC 86 95 F9 35 1C AE BC E8 B8 5E .........5.....^
03C0: F8 3F 16 23 82 91 89 31 E0 4E 44 E8 5E .?.#...1.ND.^
ForkJoinPool.commonPool-worker-1, READ: TLSv1.2 Handshake, length = 973
check handshake state: certificate[11]
update handshake state: certificate[11]
upcoming handshake states: server_key_exchange12
upcoming handshake states: certificate_request13
upcoming handshake states: server_hello_done[14]
upcoming handshake states: client certificate11
upcoming handshake states: client_key_exchange[16]
upcoming handshake states: certificate_verify15
upcoming handshake states: client change_cipher_spec[-1]
upcoming handshake states: client finished[20]
upcoming handshake states: server change_cipher_spec[-1]
upcoming handshake states: server finished[20]
*** Certificate chain
chain [0] = [
[
Version: V3
Subject: CN=somewebsite.com, OU=IT, O=some website, L=London, ST=London, C=GB
Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

Key: Sun RSA public key, 2048 bits
params: null
modulus: 31912330707791398226461683070336644203417410365591765833412379071638109456860187364968538747992582661535710303348606256338108542967485742734245004188489124948756449843501362417075365756088659650340467015764055294543693453659235234882271066522815454801481105333431668608222199861668667015767855688304038236130927733412996652719575848049644250471581574715372633286991738451628048877048878071414024024360098353681373035802836405277582720229628000685748257276749603611569477572113907767604472448726054521313438110662012193126513763420290921446059041363109929240572527273880567940667348266928624555561884569092845790610017
public exponent: 65537
Validity: [From: Mon Jun 15 13:11:43 BST 2020,
To: Thu Jun 13 13:11:43 BST 2030]
Issuer: CN=somewebsite.com, OU=IT, O=some website, L=London, ST=London, C=GB
SerialNumber: [ 124482eb 7c3cdbfe c8ccf8e1 235c5d95 ba491d38]

Certificate Extensions: 3
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 04 83 D9 E3 91 34 2C 41 FF D6 AB 2F ED 37 A1 D7 .....4,A.../.7..
0010: 29 44 47 99 )DG.
]
]

[2]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:2147483647
]

[3]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 04 83 D9 E3 91 34 2C 41 FF D6 AB 2F ED 37 A1 D7 .....4,A.../.7..
0010: 29 44 47 99 )DG.
]
]

]
Algorithm: [SHA256withRSA]
Signature:
0000: 9A CA EC 29 E9 2F 0A CE 58 52 6E 46 F8 35 A6 E2 ...)./..XRnF.5..
0010: F0 AA 91 80 D3 13 DF 69 10 8E 06 82 B8 03 95 B4 .......i........
0020: 42 CF 07 D8 BE 38 7C 19 D5 55 D1 08 AF 37 6A 92 B....8...U...7j.
0030: FE 40 02 43 08 84 B0 EE 81 E7 7C 08 8D 61 F3 F9 [email protected].........a..
0040: D7 BF FC FE 54 F6 7D B8 EA 53 2C 23 4F 9B EA 85 ....T....S,#O...
0050: 6C 79 00 F4 AE 79 52 24 3C A9 8D C0 EC B8 82 1D ly...yR$<.......
0060: 89 92 C4 6C 9C CB C0 4D 92 A2 9E EC 8B AD A0 14 ...l...M........
0070: 8C 59 E9 F2 4B 7C 02 A1 A0 63 C9 AB 0B A6 3D 1A .Y..K....c....=.
0080: 50 0E 1B C9 49 1F 33 3C 6F C8 43 D8 82 5C 47 F2 P...I.3<o.C..\G.
0090: 9E 9C 7A 6E B8 8E 53 6F 65 99 BE 30 E8 58 DD CD ..zn..Soe..0.X..
00A0: 9F F4 F4 EA 51 8F 70 14 A2 34 DD AE 56 B9 1D F3 ....Q.p..4..V...
00B0: 6B 42 E9 D3 20 19 43 F4 DE 04 2A B1 38 0A 40 AC kB.. .C...*.8.@.
00C0: 8C 1F 34 1A 49 A4 2C 11 42 98 68 FA A6 C9 52 86 ..4.I.,.B.h...R.
00D0: D5 C5 A6 CD A2 CA CA 99 23 24 F2 58 8A B7 01 E4 ........#$.X....
00E0: 2C 45 FB 8D 97 8F AB B2 DC 86 95 F9 35 1C AE BC ,E..........5...
00F0: E8 B8 5E F8 3F 16 23 82 91 89 31 E0 4E 44 E8 5E ..^.?.#...1.ND.^

]


Found trusted certificate:
[
[
Version: V3
Subject: CN=somewebsite.com, OU=IT, O=some website, L=London, ST=London, C=GB
Signature Algorithm: SHA256withRSA, OID = 1.2.840.113549.1.1.11

Key: Sun RSA public key, 2048 bits
params: null
modulus: 31912330707791398226461683070336644203417410365591765833412379071638109456860187364968538747992582661535710303348606256338108542967485742734245004188489124948756449843501362417075365756088659650340467015764055294543693453659235234882271066522815454801481105333431668608222199861668667015767855688304038236130927733412996652719575848049644250471581574715372633286991738451628048877048878071414024024360098353681373035802836405277582720229628000685748257276749603611569477572113907767604472448726054521313438110662012193126513763420290921446059041363109929240572527273880567940667348266928624555561884569092845790610017
public exponent: 65537
Validity: [From: Mon Jun 15 13:11:43 BST 2020,
To: Thu Jun 13 13:11:43 BST 2030]
Issuer: CN=somewebsite.com, OU=IT, O=some website, L=London, ST=London, C=GB
SerialNumber: [ 124482eb 7c3cdbfe c8ccf8e1 235c5d95 ba491d38]

Certificate Extensions: 3
[1]: ObjectId: 2.5.29.35 Criticality=false
AuthorityKeyIdentifier [
KeyIdentifier [
0000: 04 83 D9 E3 91 34 2C 41 FF D6 AB 2F ED 37 A1 D7 .....4,A.../.7..
0010: 29 44 47 99 )DG.
]
]

[2]: ObjectId: 2.5.29.19 Criticality=true
BasicConstraints:[
CA:true
PathLen:2147483647
]

[3]: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 04 83 D9 E3 91 34 2C 41 FF D6 AB 2F ED 37 A1 D7 .....4,A.../.7..
0010: 29 44 47 99 )DG.
]
]

]
Algorithm: [SHA256withRSA]
Signature:
0000: 9A CA EC 29 E9 2F 0A CE 58 52 6E 46 F8 35 A6 E2 ...)./..XRnF.5..
0010: F0 AA 91 80 D3 13 DF 69 10 8E 06 82 B8 03 95 B4 .......i........
0020: 42 CF 07 D8 BE 38 7C 19 D5 55 D1 08 AF 37 6A 92 B....8...U...7j.
0030: FE 40 02 43 08 84 B0 EE 81 E7 7C 08 8D 61 F3 F9 [email protected].........a..
0040: D7 BF FC FE 54 F6 7D B8 EA 53 2C 23 4F 9B EA 85 ....T....S,#O...
0050: 6C 79 00 F4 AE 79 52 24 3C A9 8D C0 EC B8 82 1D ly...yR$<.......
0060: 89 92 C4 6C 9C CB C0 4D 92 A2 9E EC 8B AD A0 14 ...l...M........
0070: 8C 59 E9 F2 4B 7C 02 A1 A0 63 C9 AB 0B A6 3D 1A .Y..K....c....=.
0080: 50 0E 1B C9 49 1F 33 3C 6F C8 43 D8 82 5C 47 F2 P...I.3<o.C..\G.
0090: 9E 9C 7A 6E B8 8E 53 6F 65 99 BE 30 E8 58 DD CD ..zn..Soe..0.X..
00A0: 9F F4 F4 EA 51 8F 70 14 A2 34 DD AE 56 B9 1D F3 ....Q.p..4..V...
00B0: 6B 42 E9 D3 20 19 43 F4 DE 04 2A B1 38 0A 40 AC kB.. .C...*.8.@.
00C0: 8C 1F 34 1A 49 A4 2C 11 42 98 68 FA A6 C9 52 86 ..4.I.,.B.h...R.
00D0: D5 C5 A6 CD A2 CA CA 99 23 24 F2 58 8A B7 01 E4 ........#$.X....
00E0: 2C 45 FB 8D 97 8F AB B2 DC 86 95 F9 35 1C AE BC ,E..........5...
00F0: E8 B8 5E F8 3F 16 23 82 91 89 31 E0 4E 44 E8 5E ..^.?.#...1.ND.^

]
[read] MD5 and SHA1 hashes: len = 973
0000: 0B 00 03 C9 00 03 C6 00 03 C3 30 82 03 BF 30 82 ..........0...0.
0010: 02 A7 A0 03 02 01 02 02 14 12 44 82 EB 7C 3C DB ..........D...<.
0020: FE C8 CC F8 E1 23 5C 5D 95 BA 49 1D 38 30 0D 06 .....#]..I.80..
0030: 09 2A 86 48 86 F7 0D 01 01 0B 05 00 30 6F 31 0B ..H........0o1.
0040: 30 09 06 03 55 04 06 13 02 47 42 31 0F 30 0D 06 0...U....GB1.0..
0050: 03 55 04 08 0C 06 4C 6F 6E 64 6F 6E 31 0F 30 0D .U....London1.0.
0060: 06 03 55 04 07 0C 06 4C 6F 6E 64 6F 6E 31 16 30 ..U....London1.0
0070: 14 06 03 55 04 0A 0C 0D 53 70 65 63 69 61 6C 20 ...U....some
0080: 53 74 75 66 66 31 0B 30 09 06 03 55 04 0B 0C 02 we1.0...U....
0090: 49 54 31 19 30 17 06 03 55 04 03 0C 10 73 70 65 IT1.0...U....spe
00A0: 63 69 61 6C 73 74 75 66 66 2E 63 6F 6D 30 1E 17 cialwe.com0..
00B0: 0D 32 30 30 36 31 35 31 32 31 31 34 33 5A 17 0D .200615121143Z..
00C0: 33 30 30 36 31 33 31 32 31 31 34 33 5A 30 6F 31 300613121143Z0o1
00D0: 0B 30 09 06 03 55 04 06 13 02 47 42 31 0F 30 0D .0...U....GB1.0.
00E0: 06 03 55 04 08 0C 06 4C 6F 6E 64 6F 6E 31 0F 30 ..U....London1.0
00F0: 0D 06 03 55 04 07 0C 06 4C 6F 6E 64 6F 6E 31 16 ...U....London1.
0100: 30 14 06 03 55 04 0A 0C 0D 53 70 65 63 69 61 6C 0...U....some
0110: 20 53 74 75 66 66 31 0B 30 09 06 03 55 04 0B 0C we1.0...U...
0120: 02 49 54 31 19 30 17 06 03 55 04 03 0C 10 73 70 .IT1.0...U....sp
0130: 65 63 69 61 6C 73 74 75 66 66 2E 63 6F 6D 30 82 ecialwe.com0.
0140: 01 22 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 ."0...
.H.......
0150: 00 03 82 01 0F 00 30 82 01 0A 02 82 01 01 00 FC ......0.........
0160: CB 5A C2 81 03 A3 6A 36 97 67 FE 71 05 D1 9F F3 .Z....j6.g.q....
0170: 49 90 B0 60 98 B5 C1 C0 11 ED 2D 81 9F 1E 0D E0 I........-..... 0180: 61 A5 F8 30 81 49 62 1A 6C 99 7F FC 6D 5C AE 0D a..0.Ib.l...m\.. 0190: E8 12 0D BF D6 7A 3F 8A 83 4E 22 52 D8 BC BF A6 .....z?..N"R.... 01A0: AB 42 A2 1C 0D 4C F7 A2 2D 84 35 69 DC D4 1B 2D .B...L..-.5i...- 01B0: 6A A6 F5 81 9E 9F 29 06 FC 73 6F 2D 81 F1 40 81 j.....)..so-..@. 01C0: B5 EC F1 8C 08 BE 57 8B 2A B0 19 E7 F2 B6 4D 64 ......W.*.....Md 01D0: B3 01 81 1F 4B 74 97 F9 CD 01 AF FF 6D FF 15 DC ....Kt......m... 01E0: C1 31 6B 87 E2 43 0E D6 70 6F F5 EE DD 97 17 18 .1k..C..po...... 01F0: 5A DC 10 70 07 E5 A5 A5 63 9F 42 10 5F F4 3D F9 Z..p....c.B._.=. 0200: 81 6D C1 DF 79 C9 84 10 F3 F8 7B D9 53 22 19 D1 .m..y.......S".. 0210: BB 56 7A 3B CA E4 F7 9B E4 9E 57 E7 54 0E F9 D3 .Vz;......W.T... 0220: 43 0D 57 23 E5 06 35 F5 34 16 45 A3 4A 87 5F 5D C.W#..5.4.E.J._] 0230: 97 5F 79 B9 3F 40 F2 F8 1B 2A 3C 0B AB AC B8 A7 ._y.?@...*<..... 0240: 18 33 44 21 71 B4 6F BA 16 30 E8 FE D1 45 4C A0 .3D!q.o..0...EL. 0250: 4E 85 C9 9C E0 92 4B 54 56 94 56 02 80 C2 61 02 N.....KTV.V...a. 0260: 03 01 00 01 A3 53 30 51 30 1D 06 03 55 1D 0E 04 .....S0Q0...U... 0270: 16 04 14 04 83 D9 E3 91 34 2C 41 FF D6 AB 2F ED ........4,A.../. 0280: 37 A1 D7 29 44 47 99 30 1F 06 03 55 1D 23 04 18 7..)DG.0...U.#.. 0290: 30 16 80 14 04 83 D9 E3 91 34 2C 41 FF D6 AB 2F 0........4,A.../ 02A0: ED 37 A1 D7 29 44 47 99 30 0F 06 03 55 1D 13 01 .7..)DG.0...U... 02B0: 01 FF 04 05 30 03 01 01 FF 30 0D 06 09 2A 86 48 ....0....0...*.H 02C0: 86 F7 0D 01 01 0B 05 00 03 82 01 01 00 9A CA EC ................ 02D0: 29 E9 2F 0A CE 58 52 6E 46 F8 35 A6 E2 F0 AA 91 )./..XRnF.5..... 02E0: 80 D3 13 DF 69 10 8E 06 82 B8 03 95 B4 42 CF 07 ....i........B.. 02F0: D8 BE 38 7C 19 D5 55 D1 08 AF 37 6A 92 FE 40 02 ..8...U...7j..@. 0300: 43 08 84 B0 EE 81 E7 7C 08 8D 61 F3 F9 D7 BF FC C.........a..... 0310: FE 54 F6 7D B8 EA 53 2C 23 4F 9B EA 85 6C 79 00 .T....S,#O...ly. 0320: F4 AE 79 52 24 3C A9 8D C0 EC B8 82 1D 89 92 C4 ..yR$<.......... 0330: 6C 9C CB C0 4D 92 A2 9E EC 8B AD A0 14 8C 59 E9 l...M.........Y. 0340: F2 4B 7C 02 A1 A0 63 C9 AB 0B A6 3D 1A 50 0E 1B .K....c....=.P.. 0350: C9 49 1F 33 3C 6F C8 43 D8 82 5C 47 F2 9E 9C 7A .I.3<o.C..\G...z 0360: 6E B8 8E 53 6F 65 99 BE 30 E8 58 DD CD 9F F4 F4 n..Soe..0.X..... 0370: EA 51 8F 70 14 A2 34 DD AE 56 B9 1D F3 6B 42 E9 .Q.p..4..V...kB. 0380: D3 20 19 43 F4 DE 04 2A B1 38 0A 40 AC 8C 1F 34 . .C...*[email protected] 0390: 1A 49 A4 2C 11 42 98 68 FA A6 C9 52 86 D5 C5 A6 .I.,.B.h...R.... 03A0: CD A2 CA CA 99 23 24 F2 58 8A B7 01 E4 2C 45 FB .....#$.X....,E. 03B0: 8D 97 8F AB B2 DC 86 95 F9 35 1C AE BC E8 B8 5E .........5.....^ 03C0: F8 3F 16 23 82 91 89 31 E0 4E 44 E8 5E .?.#...1.ND.^ [Raw read]: length = 5 0000: 16 03 03 01 4D ....M [Raw read]: length = 333 0000: 0C 00 01 49 03 00 17 41 04 3A 83 BE EB AF 52 FE ...I...A.:....R. 0010: 77 F1 50 BC 0E 01 51 B0 A9 2B 13 F6 0A AB 9E 4D w.P...Q..+.....M 0020: 84 33 93 69 85 A3 27 ED E3 70 95 28 6C B9 D3 D1 .3.i..'..p.(l... 0030: 7D 2C E0 67 BB F1 32 FF F0 DC 0A 91 6D 1F 84 EC .,.g..2.....m... 0040: 76 8E DE DF 51 73 72 53 9E 04 01 01 00 91 1B 8B v...QsrS........ 0050: A5 35 DB 68 4B 60 78 10 0D 30 57 07 AF 86 CB 7D .5.hKx..0W.....
0060: 84 76 8D ED AF FC 73 DD 72 FC DF 59 9E CE 55 E1 .v....s.r..Y..U.
0070: 70 F8 1E 51 AF 02 D6 5F A4 82 F7 CA D8 3A E2 77 p..Q........:.w
0080: 3F 7A EE 87 AF 0B DA C5 04 24 4C 12 09 DC AC 23 ?z.......$L....#
0090: A4 13 F4 23 5C 5A 65 03 F5 A5 31 A5 57 53 39 42 ...#\Ze...1.WS9B
00A0: 1B 1C EB D2 54 FA 80 CD D6 59 5B BB 1D 0B 6D A9 ....T....Y[...m.
00B0: 3F 4B CD 7B C4 D7 B0 31 F9 D3 7D 7C 30 CE 8A E7 ?K.....1....0...
00C0: 59 15 33 EF CA D6 F6 DC 6D 91 4C 7A ED D9 54 5C Y.3.....m.Lz..T
00D0: 00 B4 6C 36 8A 56 0D 86 BA F2 0D 57 9B E5 A4 1F ..l6.V.....W....
00E0: 8F C0 24 D2 20 C9 1E A5 C6 A0 F3 BC 80 63 A3 DA ..$. ........c..
00F0: 0D 80 9F 01 3C A9 93 38 7D D1 44 6B F6 20 A7 FF ....<..8..Dk. ..
0100: 86 77 F6 C7 C2 9B 43 9F 4C E1 A0 AB 12 EC 40 7C .w....C.L.....@.
0110: 4F C6 E4 5F 69 4E 96 3F 40 88 44 35 B8 DB 61 6D O..[email protected]
0120: BD 5F AC 3E 00 6D 68 C3 03 31 24 3C 69 74 0E 0F .
.>.mh..1$<it..
0130: A8 64 2D 23 6B 5F FC F5 89 80 6C 15 52 8D D7 AF .d-#k
....l.R...
0140: D0 41 4D D5 C8 16 A7 45 87 91 A9 BD D4 .AM....E.....
ForkJoinPool.commonPool-worker-1, READ: TLSv1.2 Handshake, length = 333
check handshake state: server_key_exchange[12]
update handshake state: server_key_exchange[12]
upcoming handshake states: certificate_request13
upcoming handshake states: server_hello_done[14]
upcoming handshake states: client certificate11
upcoming handshake states: client_key_exchange[16]
upcoming handshake states: certificate_verify15
upcoming handshake states: client change_cipher_spec[-1]
upcoming handshake states: client finished[20]
upcoming handshake states: server change_cipher_spec[-1]
upcoming handshake states: server finished[20]
*** ECDH ServerKeyExchange
Signature Algorithm SHA256withRSA
Server key: Sun EC public key, 256 bits
public x coord: 26466919869172568660926153947437936807653277965746169014422670828592322571747
public y coord: 50922578255075837397611923303219660150261955223464688730642099806904861741982
parameters: secp256r1 [NIST P-256, X9.62 prime256v1] (1.2.840.10045.3.1.7)
[read] MD5 and SHA1 hashes: len = 333
0000: 0C 00 01 49 03 00 17 41 04 3A 83 BE EB AF 52 FE ...I...A.:....R.
0010: 77 F1 50 BC 0E 01 51 B0 A9 2B 13 F6 0A AB 9E 4D w.P...Q..+.....M
0020: 84 33 93 69 85 A3 27 ED E3 70 95 28 6C B9 D3 D1 .3.i..'..p.(l...
0030: 7D 2C E0 67 BB F1 32 FF F0 DC 0A 91 6D 1F 84 EC .,.g..2.....m...
0040: 76 8E DE DF 51 73 72 53 9E 04 01 01 00 91 1B 8B v...QsrS........
0050: A5 35 DB 68 4B 60 78 10 0D 30 57 07 AF 86 CB 7D .5.hKx..0W..... 0060: 84 76 8D ED AF FC 73 DD 72 FC DF 59 9E CE 55 E1 .v....s.r..Y..U. 0070: 70 F8 1E 51 AF 02 D6 5F A4 82 F7 CA D8 3A E2 77 p..Q..._.....:.w 0080: 3F 7A EE 87 AF 0B DA C5 04 24 4C 12 09 DC AC 23 ?z.......$L....# 0090: A4 13 F4 23 5C 5A 65 03 F5 A5 31 A5 57 53 39 42 ...#\Ze...1.WS9B 00A0: 1B 1C EB D2 54 FA 80 CD D6 59 5B BB 1D 0B 6D A9 ....T....Y[...m. 00B0: 3F 4B CD 7B C4 D7 B0 31 F9 D3 7D 7C 30 CE 8A E7 ?K.....1....0... 00C0: 59 15 33 EF CA D6 F6 DC 6D 91 4C 7A ED D9 54 5C Y.3.....m.Lz..T\ 00D0: 00 B4 6C 36 8A 56 0D 86 BA F2 0D 57 9B E5 A4 1F ..l6.V.....W.... 00E0: 8F C0 24 D2 20 C9 1E A5 C6 A0 F3 BC 80 63 A3 DA ..$. ........c.. 00F0: 0D 80 9F 01 3C A9 93 38 7D D1 44 6B F6 20 A7 FF ....<..8..Dk. .. 0100: 86 77 F6 C7 C2 9B 43 9F 4C E1 A0 AB 12 EC 40 7C .w....C.L.....@. 0110: 4F C6 E4 5F 69 4E 96 3F 40 88 44 35 B8 DB 61 6D [email protected] 0120: BD 5F AC 3E 00 6D 68 C3 03 31 24 3C 69 74 0E 0F ._.>.mh..1$<it.. 0130: A8 64 2D 23 6B 5F FC F5 89 80 6C 15 52 8D D7 AF .d-#k_....l.R... 0140: D0 41 4D D5 C8 16 A7 45 87 91 A9 BD D4 .AM....E..... [Raw read]: length = 5 0000: 16 03 03 00 04 ..... [Raw read]: length = 4 0000: 0E 00 00 00 .... ForkJoinPool.commonPool-worker-1, READ: TLSv1.2 Handshake, length = 4 check handshake state: server_hello_done[14] update handshake state: server_hello_done[14] upcoming handshake states: client certificate[11](optional) upcoming handshake states: client_key_exchange[16] upcoming handshake states: certificate_verify[15](optional) upcoming handshake states: client change_cipher_spec[-1] upcoming handshake states: client finished[20] upcoming handshake states: server change_cipher_spec[-1] upcoming handshake states: server finished[20] *** ServerHelloDone [read] MD5 and SHA1 hashes: len = 4 0000: 0E 00 00 00 .... *** ECDHClientKeyExchange ECDH Public value: { 4, 56, 171, 48, 0, 158, 204, 59, 202, 146, 190, 82, 137, 195, 33, 137, 76, 30, 96, 111, 92, 151, 79, 214, 101, 208, 106, 154, 149, 199, 201, 143, 170, 187, 147, 104, 20, 96, 174, 61, 84, 136, 137, 43, 199, 169, 151, 188, 1, 253, 146, 10, 165, 162, 215, 174, 140, 58, 81, 213, 136, 197, 171, 229, 194 } update handshake state: client_key_exchange[16] upcoming handshake states: certificate_verify[15](optional) upcoming handshake states: client change_cipher_spec[-1] upcoming handshake states: client finished[20] upcoming handshake states: server change_cipher_spec[-1] upcoming handshake states: server finished[20] [write] MD5 and SHA1 hashes: len = 70 0000: 10 00 00 42 41 04 38 AB 30 00 9E CC 3B CA 92 BE ...BA.8.0...;... 0010: 52 89 C3 21 89 4C 1E 60 6F 5C 97 4F D6 65 D0 6A R..!.L.o.O.e.j
0020: 9A 95 C7 C9 8F AA BB 93 68 14 60 AE 3D 54 88 89 ........h..=T.. 0030: 2B C7 A9 97 BC 01 FD 92 0A A5 A2 D7 AE 8C 3A 51 +.............:Q 0040: D5 88 C5 AB E5 C2 ...... ForkJoinPool.commonPool-worker-1, WRITE: TLSv1.2 Handshake, length = 70 [Raw write]: length = 75 0000: 16 03 03 00 46 10 00 00 42 41 04 38 AB 30 00 9E ....F...BA.8.0.. 0010: CC 3B CA 92 BE 52 89 C3 21 89 4C 1E 60 6F 5C 97 .;...R..!.L.o.
0020: 4F D6 65 D0 6A 9A 95 C7 C9 8F AA BB 93 68 14 60 O.e.j........h. 0030: AE 3D 54 88 89 2B C7 A9 97 BC 01 FD 92 0A A5 A2 .=T..+.......... 0040: D7 AE 8C 3A 51 D5 88 C5 AB E5 C2 ...:Q...... SESSION KEYGEN: PreMaster Secret: 0000: 15 27 88 8F 62 C2 B8 FD C8 14 05 E9 6E 35 8F 4D .'..b.......n5.M 0010: C7 96 22 AB 11 6E 86 83 2C A7 F2 A8 4C 6B AD 62 .."..n..,...Lk.b CONNECTION KEYGEN: Client Nonce: 0000: 5E E7 78 0D C7 A6 6A F0 DC B0 E3 F1 3C 4A 98 3D ^.x...j.....<J.= 0010: E9 FA E8 91 37 D4 7F 52 FC F1 B6 A0 7B 57 49 CD ....7..R.....WI. Server Nonce: 0000: 9A 2B 40 58 EF 32 9D 72 DC 1E B4 CE 33 56 FA CE [email protected].. 0010: 96 89 F2 A2 6F F6 AB 61 44 4F 57 4E 47 52 44 01 ....o..aDOWNGRD. Master Secret: 0000: 42 AA FF 66 05 AC 0C 0F 44 1E A6 65 CD 7E C7 09 B..f....D..e.... 0010: 74 30 1F F3 38 41 58 7C 9E FA 99 E3 F2 7A 50 8D t0..8AX......zP. 0020: 50 23 E9 1F D0 82 B2 62 D5 D1 F9 E8 EC 04 21 8F P#.....b......!. ... no MAC keys used for this cipher Client write key: 0000: CF 91 8C B6 F3 6F A7 0A CB 75 62 60 D8 86 B8 BC .....o...ub....
0010: 78 35 90 CB 67 53 10 3D 6C B5 2B C5 4B 83 C1 AB x5..gS.=l.+.K...
Server write key:
0000: CF 94 D3 B5 19 E8 D3 A7 69 73 EB 92 15 40 22 21 ........is...@"!
0010: 12 9D 55 7F 26 86 C2 FD 9A A6 9A DA D3 40 C2 70 ..U.&[email protected]
Client write IV:
0000: C9 39 FC E9 .9..
Server write IV:
0000: C5 2C 7E 53 .,.S
update handshake state: change_cipher_spec
upcoming handshake states: client finished[20]
upcoming handshake states: server change_cipher_spec[-1]
upcoming handshake states: server finished[20]
ForkJoinPool.commonPool-worker-1, WRITE: TLSv1.2 Change Cipher Spec, length = 1
[Raw write]: length = 6
0000: 14 03 03 00 01 01 ......
*** Finished
verify_data: { 8, 35, 137, 210, 36, 169, 163, 152, 195, 63, 26, 63 }


update handshake state: finished[20]
upcoming handshake states: server change_cipher_spec[-1]
upcoming handshake states: server finished[20]
[write] MD5 and SHA1 hashes: len = 16
0000: 14 00 00 0C 08 23 89 D2 24 A9 A3 98 C3 3F 1A 3F .....#..$....?.?
Padded plaintext before ENCRYPTION: len = 16
0000: 14 00 00 0C 08 23 89 D2 24 A9 A3 98 C3 3F 1A 3F .....#..$....?.?
ForkJoinPool.commonPool-worker-1, WRITE: TLSv1.2 Handshake, length = 40
[Raw write]: length = 45
0000: 16 03 03 00 28 00 00 00 00 00 00 00 00 B2 CB 57 ....(..........W
0010: 45 D2 15 C5 E4 B0 6B 0F 96 B7 CB 8A 89 B6 B7 BC E.....k.........
0020: DA 9A 0C D7 65 E5 1A F6 34 1C 8B A5 4E ....e...4...N
[Raw read]: length = 5
0000: 14 03 03 00 01 .....
[Raw read]: length = 1
0000: 01 .
ForkJoinPool.commonPool-worker-1, READ: TLSv1.2 Change Cipher Spec, length = 1
update handshake state: change_cipher_spec
upcoming handshake states: server finished[20]
[Raw read]: length = 5
0000: 16 03 03 00 28 ....(
[Raw read]: length = 40
0000: 63 7A AF BE 7B 19 54 28 36 5E 23 16 BF 3C E2 17 cz....T(6^#..<..
0010: 37 A4 81 EC 9E D0 9F 7E C4 77 43 C2 FD 87 95 F0 7........wC.....
0020: 81 80 6B 89 CC 1A 6D FB ..k...m.
ForkJoinPool.commonPool-worker-1, READ: TLSv1.2 Handshake, length = 40
Padded plaintext after DECRYPTION: len = 16
0000: 14 00 00 0C 33 BC 08 B2 98 C2 9D 51 A7 04 1B 74 ....3......Q...t
check handshake state: finished[20]
update handshake state: finished[20]
*** Finished
verify_data: { 51, 188, 8, 178, 152, 194, 157, 81, 167, 4, 27, 116 }


%% Cached client session: [Session-2, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384]
[read] MD5 and SHA1 hashes: len = 16
0000: 14 00 00 0C 33 BC 08 B2 98 C2 9D 51 A7 04 1B 74 ....3......Q...t
Padded plaintext before ENCRYPTION: len = 124
0000: C3 BD C2 34 7B 22 70 72 6F 74 6F 63 6F 6C 5F 76 ...4."protocol_v
0010: 65 72 73 69 6F 6E 22 3A 30 2C 22 61 75 74 68 65 ersion":0,"authe
0020: 6E 74 69 63 61 74 69 6F 6E 5F 6D 65 74 68 6F 64 ntication_method
0030: 22 3A 22 53 43 52 41 4D 2D 53 48 41 2D 32 35 36 ":"SCRAM-SHA-256
0040: 22 2C 22 61 75 74 68 65 6E 74 69 63 61 74 69 6F ","authenticatio
0050: 6E 22 3A 22 6E 2C 2C 6E 3D 61 64 6D 69 6E 2C 72 n":"n,,n=admin,r
0060: 3D 62 75 6E 6B 4B 64 61 38 65 41 78 36 50 67 65 =bunkKda8eAx6Pge
0070: 71 39 41 33 4C 6B 2B 41 67 22 7D 00 q9A3Lk+Ag"..
ForkJoinPool.commonPool-worker-1, WRITE: TLSv1.2 Application Data, length = 148
[Raw write]: length = 153
0000: 17 03 03 00 94 00 00 00 00 00 00 00 01 21 AE EF .............!..
0010: 84 CC DA 78 C7 B4 C2 46 93 FE 6B 73 FC 95 5F 33 ...x...F..ks.._3
0020: F9 80 CB DE 47 37 79 E0 1A 74 6B D3 0A B4 FF 60 ....G7y..tk....`
0030: C9 26 74 9F 68 05 AA F2 A7 71 55 25 F8 63 74 C7 .&t.h....qU%.ct.
0040: 2F 24 35 2F 5C 08 B2 5B 70 72 44 07 E9 74 16 5C /$5/..[prD..t.
0050: B6 47 7F 2E 33 A4 D9 E6 4B BC BD 4B 52 A2 0C 05 .G..3...K..KR...
0060: 7F 6E EF 79 62 10 84 59 14 C6 8D 62 25 CD EF A9 .n.yb..Y...b%...
0070: 4C 50 ED 57 C1 00 40 74 E3 57 5C 19 32 4E 08 FD [email protected]..
0080: 86 70 30 1A 11 50 B5 18 57 BF BC C5 B4 7A E7 47 .p0..P..W....z.G
0090: C8 8E 56 62 E5 DF B7 98 1C ..Vb.....
14:31:04.827 [main] ERROR com.we.pool.RethinkConnectionPool -
com.rethinkdb.gen.exc.ReqlDriverError: Read timed out.
at com.rethinkdb.net.DefaultConnectionFactory$SocketWrapper.readCString(DefaultConnectionFactory.java:134) ~[rethinkdb-driver-2.4.3.jar:?]
at com.rethinkdb.net.HandshakeProtocol.doHandshake(HandshakeProtocol.java:51) ~[rethinkdb-driver-2.4.3.jar:?]
at com.rethinkdb.net.Connection.lambda$connectAsync$0(Connection.java:131) ~[rethinkdb-driver-2.4.3.jar:?]
at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java:616) ~[?:1.8.0_252]
at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:591) ~[?:1.8.0_252]
at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488) ~[?:1.8.0_252]
at java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1609) ~[?:1.8.0_252]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java) ~[?:1.8.0_252]
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596) ~[?:1.8.0_252]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) ~[?:1.8.0_252]
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) ~[?:1.8.0_252]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) ~[?:1.8.0_252]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) ~[?:1.8.0_252]

Fix tests failing

This issue tracks the failing generated tests.

MathLogicLogic

Appears to happen because of outdated polyglot tests? The error happens because Python.

r.expr(r.expr(True) & r.expr(False) == r.expr(False) | r.expr(True)) seems to be related to a Python-specific behaviour.

Gets translated just fine to r.expr(r.expr(true).and(r.expr(false)).eq(r.expr(false).or(r.expr(true)))) and the test fails because it compiles correctly.

MathLogicBit

Appears to happen because of outdated polyglot tests?

r.expr(-1).bit_sal(54) is evaluated and the result is written as a Double. Jackson will parse it as Double and it'll live as a Double.

A quick fix should be as easy as casting all numbers to double before asserting equality, because Python. I don't know if it's as good as it's easy, though.

Replacing 54 with 53 and recalculating the value should make the test pass.

MutationInsert

The error happens because Python.

'a'*500 is valid in python but invalid in Java.

Polyglot translates to r.mul("a", 500L), which is invalid to RethinkDB.

Fix needs to deal with python scripts, see #11

MetaGrant/ChangefeedsNow

Either badly generated, or polyglot tests are outdated.

ChangefeedsNow is so bad that the generated test was removed from git tree. (It blocks all tests for 2 minutes)

Expected type DATUM but found DATABASE after use of conn.use("database_name")

Using Groovy, I have a function that performs the following steps (pseudocode):

def conn = r.connection().connect()
def validate (Connection conn) {
1 check rethink database list
2 if isn't on the list, create it.
3 conn.use ("my database")
4 check table list
5 if "table a" isn't on the list, create it.
}

However, at step 4, where it uses:

r.tableList().run (conn)

I get in my logs:

23:19:16.939 [vert.x-eventloop-thread-1] DEBUG com.rethinkdb.ast.Query - JSON Send: Token: 4 [1,[62,[]],{"db":[14,[[14,["mydb"]]]],"read_mode":"majority","durability":"hard"}]
23:19:16.940 [pool-1-thread-1] DEBUG com.rethinkdb.ast.Query - JSON Recv: Token: 4 {"t":18,"e":3000000,"r":["Expected type DATUM but found DATABASE:\ndb("mydb")"],"b":[]}

It would appear that somehow the 'use' command is causing the database buffer to be set incorrectly.
Without the conn.use("my database"), the table creation works, however it creates the table against the test database instead of "my database" (which is expected behavour).

Result hasNext() Hangs Forever

Describe the bug

I'm running into an odd bug where result.hasNext() hangs forever after successfully iterating through all of the expected results of a query. I have an application where I need to load the contents of a table at startup, which I've implemented like so:

    private Table http() {
        return r.db(dbName).table(HTTPTable);
    }

    private void initalizeHistory() {
        logger.debug("Initializing history ...");
        try {
            Result<MultiplayerRequestResponse> result = http().run(dbConn, MultiplayerRequestResponse.class);
            logger.debug("Got history ...");
            while (result.hasNext()) {
                MultiplayerRequestResponse entry = result.next();
                logger.debug("Got entry: %s", entry);
                history.add(entry);
            }
            logger.debug("Results done.");
        } catch(Exception err) {
            logger.error(err);
        }
        logger.debug("History initialized");
    }

When the code runs I get the following in the log files, it loads the expected data but then the hasNext() hangs forever when it should terminate the loop. Note that I never get the Results done. or History initialized log messages from the code. I can also comment out the history.add(entry) code and observe the same behavior, so it would seem to be an issue with the Java driver:

Successfully connected: com.rethinkdb.net.Connection@636a9651
Initializing history ...
Got history ...
Got entry: <id: b4d5b0d0a40aa9aada0ba6d9d3fecdb66957e702, method: GET, protocol: https, host: www.bishopfox.com, port: 443, path: /services/, comment: >
Got entry: <id: 0e42eddb67a6a871b27018e3aef4ae3a521fa21d, method: GET, protocol: https, host: api.hubapi.com, port: 443, path: /hs-script-loader-public/v1/config/pixel/json, comment: >
Got entry: <id: 2cd12678b8d72e5a597e49a7c0abac2415638c75, method: GET, protocol: https, host: api.hubspot.com, port: 443, path: /livechat-public/v1/message/public, comment: >
Got entry: <id: f9eaea5653fab7033e6d3975fd0705f15ea874a8, method: OPTIONS, protocol: https, host: api.hubspot.com, port: 443, path: /livechat-public/v1/message/public, comment: >

... and then the app dies, hanging forever.

System info

  • Java: 13.0.1
  • RethinkDB Version: rethinkdb 2.4.1~0buster (CLANG 7.0.1 (tags/RELEASE_701/final))

Construction of object via reflection fails when any of the values in the db is null

in Util.java

    private static boolean areParametersMatching(Parameter[] parameters, Map<String, Object> values) {
        return Arrays.stream(parameters).allMatch(parameter ->
                values.containsKey(parameter.getName()) &&
                        values.get(parameter.getName()).getClass() == parameter.getType()
        );
    }

values will contain parameter.getName() however the value for it will be null, on which you cannot call .getClass() hence a nullpointerexception is thrown.

Filtering in Groovy not working properly

Describe the bug
I'm following the steps in https://rethinkdb.com/blog/alt-jvm-driver/, and the "fellowship" query do not give me anything.

To Reproduce
Steps to reproduce the behavior:

  1. Create a table named fellowship
  2. Insert some characters
  3. Try to query with a lambda filter

Expected behavior
I expect it to filter and give me the desired results.

Screenshots
image
image
image

System info

  • OS: Docker
  • RethinkDB:
    • Server: 2.4.0-8-g07da06-dirty
    • Driver: 2.4.4
  • JDK: java-8-openjdk-amd64

Make Connection.Builder generates a db-url

Add a builder.dbUrl() method, which should return a java URI instance.

Also, r.connection(r.connection()...dbUrl()) should be (almost) equivalent to using the builder that generated the db-url (factories can't nor shouldn't be serialized).

Missing findAndRegisterModules() when initialising the ObjectMapper

With RethinkDB Java Driver 2.4.4, if an OffsetDateTime is being saved, following error occurs:
java.lang.IllegalArgumentException: Java 8 date/time type java.time.OffsetDateTime not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling (through reference chain: ch.yourpackage.YourClass["yourField"])

I state that com.fasterxml.jackson.datatype:jackson-datatype-jsr310 is already in my build.gradle file.

To avoid the above issue, as a workaround I need to include this line during RethinkDB initializer:
RethinkDB.setResultMapper(RethinkDB.getResultMapper().findAndRegisterModules());

My advice would be to modify your getResultMapper() method in the RethinkDB.java class as follows:

public synchronized static @NotNull ObjectMapper getResultMapper() {
        ObjectMapper mapper = resultMapper;
        if (mapper == null) {
            mapper = new ObjectMapper()
                .findAndRegisterModules() // This line should be the new one
                .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
            resultMapper = mapper;
        }
        return mapper;
    }

[Experimental] ReqlAst.run syntax

This issue is discussing something to be implemented first-hand on the develop/experimental branch, which is tracked by #7

At first, ReQL syntax feels nice, but after some usage, it starts to freak you out.

Some queries return Cursor<T>, others return List<T>, others just return T.If you're a JS/Python/Ruby developer, it is fine, but in Java it makes you feel lost.

The reason lies on this line:

public <T, P> T run(Connection conn, OptArgs runOpts, Class<P> pojoClass) {

In Java, experienced developers orient themselves by the type system. But in this case, there is no type logic at all!

T, the return type, can be P, but can also be Cursor<P>, which makes all code a runtime guessing game of "will it return a cursor, a list or something else?".

I'm opening this issue to ask the community your opinions about this annoying issue, if it should be fixed or not, and if it should, what would you think would be a better syntax?

Make POJOs for RethinkDB-specific objects.

Currently, the query r.table("test").insert(r.hashMap("foo", "bar").run(conn) returns a Map.

But this is the Java driver and we'd have a better interface if we had a POJO, provided by the driver, to unserialize to. This would make the query just barely slightly bigger:

r.table("test").insert(r.hashMap("foo", "bar").run(conn, TableOperation.class)

But this would give automatic completion for all the documented values.

List of known objects:

(Note: these aren't official nor final names)

Return Json not LinkedHashMap

By now you return a Json with can be converted to a LinkedHashMap.
This is wha you return:

{id=bc2266bd-ba3a-4cd9-9490-c9b856b71bc9, lastName=testLastName, name=testName1, uuid=705d28d7-19b2-4d3b-8268-f40c65223a80}

You can´t cast this to the user class by now. You have to cast it to a LinkedHashMap and have to get every value extra for the key which is not so nice.

If you convert a class to json it looks like:

{"uuid":"5bbfa3a8-81c7-4987-a431-aac52dd3f291","name":"testName1","lastName":"testLastName"}

It´s pretty simillar to your output but would have a huge impact on development speed. You can easily cast this to the UserClass

Just a little improvement

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.