Technology1 min read

WebRTC Calls, Key Agreement and ORM Checks at Build Time

By · Published by Everything Blog

In short

The platform's new WebRTC package routes encrypted peer-to-peer audio and video directly between devices, relying on developer-managed signaling to bypass central media servers. Cryptographic updates introduce native P-256 key agreement and a portable HKDF implementation, facilitating advanced security protocols like Double Ratchet across all platforms and servers. For external backend services, a strictly validated HTTP/2 client manages sensitive enterprise connections with isolated certificates. Furthermore, the platform's repositories and ORM now enforce entity validation during compilation to prevent crashes.

Key points

  • Direct peer-to-peer WebRTC connections ensure that live call media completely bypasses ce…: Direct peer-to-peer WebRTC connections ensure that live call media completely bypasses central application servers.
  • Platform-wide cryptographic primitives allow developers to implement advanced protocols l…: Platform-wide cryptographic primitives allow developers to implement advanced protocols like X3DH, Double Ratchet, and secure pairing.
  • Backend infrastructure gains isolated client certificate authentication tailored for inte…: Backend infrastructure gains isolated client certificate authentication tailored for integrations with banks and payment processors.

Sources checked by our analysis pipeline: 1

The last post this week covers what Parley, Savor and Wayline needed underneath: calls, encryption and a backend you can trust with real data. These are features you’d usually assemble from three vendors and a few weekends of glue code.

Voice and video calls with WebRTC

com.codename1.webrtc

carries live audio and video directly between two devices, encrypted on the way, with a TURN relay when there’s no direct path. On Android it’s Google’s WebRTC library, on iOS the Apple build of the same library, and in the browser it’s the browser’s own WebRTC. Referencing the package is what adds the native library to a build, so apps that don’t make calls don’t pay for it.

WebRtc.openUserMedia(true, true, true).ready(media -> {

PeerConnectionConfig config = new PeerConnectionConfig()

.addIceServer(IceServer.stun("stun:stun.example.com:3478"));

pc = WebRtc.createPeerConnection(config, new PeerConnection.Listener() {

public void iceCandidate(PeerConnection connection, IceCandidate candidate) {

signalling.send(candidate);

}

public void stateChanged(PeerConnection connection, String state) {

}

public void remoteTrack(PeerConnection connection, MediaTrack track) {

if (track.isVideo()) {

form.add(BorderLayout.CENTER, new VideoView(track, false));

form.revalidate();

}

}

});

pc.addTrack(media.getAudio());

pc.addTrack(media.getVideo());

pc.createOffer().ready(offer -> pc.setLocalDescription(offer)

.ready(done -> signalling.send(offer)));

});

Signaling is yours on…

Technology