/* * Copyright 2018 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ package org.webrtc; import org.webrtc.PeerConnection; /** * Easily storable/serializable version of a native C++ RTCCertificatePEM. */ public class RtcCertificatePem { /** PEM string representation of the private key. */ public final String privateKey; /** PEM string representation of the certificate. */ public final String certificate; /** Default expiration time of 30 days. */ private static final long DEFAULT_EXPIRY = 60 * 60 * 24 * 30; /** Instantiate an RtcCertificatePem object from stored strings. */ @CalledByNative public RtcCertificatePem(String privateKey, String certificate) { this.privateKey = privateKey; this.certificate = certificate; } @CalledByNative String getPrivateKey() { return privateKey; } @CalledByNative String getCertificate() { return certificate; } /** * Generate a new RtcCertificatePem with the default settings of KeyType = ECDSA and * expires = 30 days. */ public static RtcCertificatePem generateCertificate() { return nativeGenerateCertificate(PeerConnection.KeyType.ECDSA, DEFAULT_EXPIRY); } /** * Generate a new RtcCertificatePem with a custom KeyType and the default setting of * expires = 30 days. */ public static RtcCertificatePem generateCertificate(PeerConnection.KeyType keyType) { return nativeGenerateCertificate(keyType, DEFAULT_EXPIRY); } /** * Generate a new RtcCertificatePem with a custom expires and the default setting of * KeyType = ECDSA. */ public static RtcCertificatePem generateCertificate(long expires) { return nativeGenerateCertificate(PeerConnection.KeyType.ECDSA, expires); } /** Generate a new RtcCertificatePem with a custom KeyType and a custom expires. */ public static RtcCertificatePem generateCertificate( PeerConnection.KeyType keyType, long expires) { return nativeGenerateCertificate(keyType, expires); } private static native RtcCertificatePem nativeGenerateCertificate( PeerConnection.KeyType keyType, long expires); }