1/*
2 *  Copyright 2012 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#ifndef WEBRTC_BASE_SSLFINGERPRINT_H_
12#define WEBRTC_BASE_SSLFINGERPRINT_H_
13
14#include <string>
15
16#include "webrtc/base/basictypes.h"
17#include "webrtc/base/buffer.h"
18#include "webrtc/base/sslidentity.h"
19
20namespace rtc {
21
22class SSLCertificate;
23
24struct SSLFingerprint {
25  static SSLFingerprint* Create(const std::string& algorithm,
26                                const rtc::SSLIdentity* identity);
27
28  static SSLFingerprint* Create(const std::string& algorithm,
29                                const rtc::SSLCertificate* cert);
30
31  static SSLFingerprint* CreateFromRfc4572(const std::string& algorithm,
32                                           const std::string& fingerprint);
33
34  SSLFingerprint(const std::string& algorithm,
35                 const uint8_t* digest_in,
36                 size_t digest_len);
37
38  SSLFingerprint(const SSLFingerprint& from);
39
40  bool operator==(const SSLFingerprint& other) const;
41
42  std::string GetRfc4572Fingerprint() const;
43
44  std::string ToString();
45
46  std::string algorithm;
47  rtc::Buffer digest;
48};
49
50}  // namespace rtc
51
52#endif  // WEBRTC_BASE_SSLFINGERPRINT_H_
53