• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.h"
12 #include "sdk/android/generated_peerconnection_jni/SSLCertificateVerifier_jni.h"
13 #include "sdk/android/native_api/jni/class_loader.h"
14 #include "sdk/android/native_api/jni/java_types.h"
15 
16 namespace webrtc {
17 namespace jni {
18 
SSLCertificateVerifierWrapper(JNIEnv * jni,const JavaRef<jobject> & ssl_certificate_verifier)19 SSLCertificateVerifierWrapper::SSLCertificateVerifierWrapper(
20     JNIEnv* jni,
21     const JavaRef<jobject>& ssl_certificate_verifier)
22     : ssl_certificate_verifier_(jni, ssl_certificate_verifier) {}
23 
24 SSLCertificateVerifierWrapper::~SSLCertificateVerifierWrapper() = default;
25 
Verify(const rtc::SSLCertificate & certificate)26 bool SSLCertificateVerifierWrapper::Verify(
27     const rtc::SSLCertificate& certificate) {
28   JNIEnv* jni = AttachCurrentThreadIfNeeded();
29 
30   // Serialize the der encoding of the cert into a jbyteArray
31   rtc::Buffer cert_der_buffer;
32   certificate.ToDER(&cert_der_buffer);
33   ScopedJavaLocalRef<jbyteArray> jni_buffer(
34       jni, jni->NewByteArray(cert_der_buffer.size()));
35   jni->SetByteArrayRegion(
36       jni_buffer.obj(), 0, cert_der_buffer.size(),
37       reinterpret_cast<const jbyte*>(cert_der_buffer.data()));
38 
39   return Java_SSLCertificateVerifier_verify(jni, ssl_certificate_verifier_,
40                                             jni_buffer);
41 }
42 
43 }  // namespace jni
44 }  // namespace webrtc
45