blob: 6070135b3e12f27ef753596b45f9ce9ddf9415f0 [file] [log] [blame]
/*
* 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);
}