{"id":19635147,"url":"https://github.com/saltyrtc/saltyrtc-client-java","last_synced_at":"2025-04-28T07:32:00.186Z","repository":{"id":42409484,"uuid":"61617184","full_name":"saltyrtc/saltyrtc-client-java","owner":"saltyrtc","description":"SaltyRTC Java implementation.","archived":false,"fork":false,"pushed_at":"2023-07-20T21:28:34.000Z","size":10251,"stargazers_count":3,"open_issues_count":14,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-26T14:06:33.379Z","etag":null,"topics":["client","java","saltyrtc","signaling"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saltyrtc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-21T08:41:12.000Z","updated_at":"2023-07-20T21:28:10.000Z","dependencies_parsed_at":"2024-11-11T12:24:26.184Z","dependency_job_id":"1c6aabd0-2f49-4f6c-b8ff-2a9cb01af1bd","html_url":"https://github.com/saltyrtc/saltyrtc-client-java","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltyrtc%2Fsaltyrtc-client-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltyrtc%2Fsaltyrtc-client-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltyrtc%2Fsaltyrtc-client-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saltyrtc%2Fsaltyrtc-client-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saltyrtc","download_url":"https://codeload.github.com/saltyrtc/saltyrtc-client-java/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251271310,"owners_count":21562523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","java","saltyrtc","signaling"],"created_at":"2024-11-11T12:24:00.906Z","updated_at":"2025-04-28T07:31:59.577Z","avatar_url":"https://github.com/saltyrtc.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SaltyRTC Java Client\n\n[![Build status](https://circleci.com/gh/saltyrtc/saltyrtc-client-java.svg?style=shield\u0026circle-token=:circle-token)](https://circleci.com/gh/saltyrtc/saltyrtc-client-java)\n[![Codacy](https://img.shields.io/codacy/grade/d322a8e504ef4461b4cd2a2b17d0fa2b/master.svg)](https://www.codacy.com/app/saltyrtc/saltyrtc-client-java/dashboard)\n[![Java Version](https://img.shields.io/badge/java-8%2B-orange.svg)](https://github.com/saltyrtc/saltyrtc-client-java)\n[![License](https://img.shields.io/badge/license-MIT%20%2F%20Apache%202.0-blue.svg)](https://github.com/saltyrtc/saltyrtc-client-java)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/535/badge)](https://bestpractices.coreinfrastructure.org/projects/535)\n[![Chat on Gitter](https://badges.gitter.im/saltyrtc/Lobby.svg)](https://gitter.im/saltyrtc/Lobby)\n\nThis is a [SaltyRTC](https://github.com/saltyrtc/saltyrtc-meta) v1\nimplementation for Java 8+.\n\n## Installing\n\nThe package is available on Maven Central.\n\nGradle:\n\n```groovy\ncompile 'org.saltyrtc:saltyrtc-client:0.14.1'\n```\n\nMaven:\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.saltyrtc\u003c/groupId\u003e\n  \u003cartifactId\u003esaltyrtc-client\u003c/artifactId\u003e\n  \u003cversion\u003e0.14.1\u003c/version\u003e\n  \u003ctype\u003epom\u003c/type\u003e\n\u003c/dependency\u003e\n```\n\n## Usage / Documentation\n\nDocumentation can be found at\n[https://saltyrtc.github.io/saltyrtc-client-java/](https://saltyrtc.github.io/saltyrtc-client-java/).\n\nPlase note that instances of this library are not considered thread-safe. Thus, an application\nusing more than one thread needs to take care of synchronisation itself.\n\n## Manual Testing\n\nTo try a development version of the library, you can build a local version to\nthe local maven repository (usually at `$HOME/.m2/repository/`):\n\n    ./gradlew publishToMavenLocal\n\nInclude it in your project like this:\n\n    repositories {\n        ...\n        mavenLocal()\n    }\n\n## Coding Guidelines\n\nUnfortunately we cannot use all Java 8 features, in order to be compatible with\nAndroid API \u003c24. Please avoid using the following APIs:\n\n- `java.lang.annotation.Repeatable`\n- `AnnotatedElement.getAnnotationsByType(Class)`\n- `java.util.stream`\n- `java.lang.FunctionalInterface`\n- `java.lang.reflect.Method.isDefault()`\n- `java.util.function`\n- `java.util.Optional`\n\nThe CI tests contains a script to ensure that these APIs aren't being called. You can also run it manually:\n\n    bash .circleci/check_android_support.sh\n\n## Automated Testing\n\n### 1. Preparing the Server\n\nFirst, clone the `saltyrtc-server-python` repository.\n\n    git clone https://github.com/saltyrtc/saltyrtc-server-python\n    cd saltyrtc-server-python\n\nThen create a test certificate for localhost, valid for 5 years.\n\n    openssl req -new -newkey rsa:1024 -nodes -sha256 \\\n        -out saltyrtc.csr -keyout saltyrtc.key \\\n        -subj '/C=CH/O=SaltyRTC/CN=localhost/'\n    openssl x509 -req -days 1825 \\\n        -in saltyrtc.csr \\\n        -signkey saltyrtc.key -out saltyrtc.crt\n\nCreate a Java keystore containing this certificate.\n\n    keytool -import -trustcacerts -alias root \\\n        -file saltyrtc.crt -keystore saltyrtc.jks \\\n        -storetype JKS -storepass saltyrtc -noprompt\n\nCreate a Python virtualenv with dependencies:\n\n    python3 -m virtualenv venv\n    venv/bin/pip install .[logging]\n\nFinally, start the server with the following test permanent key:\n\n    export SALTYRTC_SERVER_PERMANENT_KEY=0919b266ce1855419e4066fc076b39855e728768e3afa773105edd2e37037c20 # Public: 09a59a5fa6b45cb07638a3a6e347ce563a948b756fd22f9527465f7c79c2a864\n    venv/bin/saltyrtc-server -v 5 serve -p 8765 \\\n        -sc saltyrtc.crt -sk saltyrtc.key \\\n        -k $SALTYRTC_SERVER_PERMANENT_KEY\n\n### 2. Running Tests\n\nMake sure that the certificate keystore from the server is copied or symlinked\nto this repository:\n\n    ln -s path/to/saltyrtc-server-python/saltyrtc.jks\n\nWith the server started in the background and the `saltyrtc.jks` file in the\ncurrent directory, run the tests:\n\n    ./gradlew test\n\n\n## Security\n\n### Signing\n\nReleases are signed with the following PGP ED25519 public key:\n\n    sec   ed25519 2021-05-05 [SC] [expires: 2025-05-04]\n          27655CDD319B686A73661526DCD186BEB204C8FD\n    uid           SaltyRTC (Release signing key)\n\n### Responsible Disclosure / Reporting Security Issues\n\nPlease report security issues directly to one or both of the following contacts:\n\n- Danilo Bargen\n    - Email: mail@dbrgn.ch\n    - Threema: EBEP4UCA\n    - GPG: [EA456E8BAF0109429583EED83578F667F2F3A5FA][keybase-dbrgn]\n- Lennart Grahl\n    - Email: lennart.grahl@gmail.com\n    - Threema: MSFVEW6C\n    - GPG: [3FDB14868A2B36D638F3C495F98FBED10482ABA6][keybase-lgrahl]\n\n[keybase-dbrgn]: https://keybase.io/dbrgn\n[keybase-lgrahl]: https://keybase.io/lgrahl\n\n\n## License\n\n    Copyright (c) 2016-2021 Threema GmbH\n\n    Licensed under the Apache License, Version 2.0, \u003csee LICENSE-APACHE file\u003e\n    or the MIT license \u003csee LICENSE-MIT file\u003e, at your option. This file may not be\n    copied, modified, or distributed except according to those terms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaltyrtc%2Fsaltyrtc-client-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaltyrtc%2Fsaltyrtc-client-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaltyrtc%2Fsaltyrtc-client-java/lists"}