blob: 7cb028a360572947ed19c12cadd35dced90414e0 [file]
/*
* 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.
*/
#import <Foundation/Foundation.h>
#import "sdk/objc/base/RTCMacros.h"
NS_ASSUME_NONNULL_BEGIN
/**
* Objective-C bindings for webrtc::CryptoOptions. This API had to be flattened
* as Objective-C doesn't support nested structures.
*/
RTC_OBJC_EXPORT
@interface RTC_OBJC_TYPE (RTCCryptoOptions) : NSObject
/**
* Enable GCM crypto suites from RFC 7714 for SRTP. GCM will only be used
* if both sides enable it
*/
@property(nonatomic, assign) BOOL srtpEnableGcmCryptoSuites;
/**
* If set, GCM crypto suites are listed before kSrtpAes128CmSha1_80 in the
* SRTP cipher preference order, so GCM is selected whenever both peers
* support it. Otherwise GCM is offered last.
*/
@property(nonatomic, assign) BOOL srtpPreferGcmCryptoSuites;
/**
* If set to true, the (potentially insecure) crypto cipher
* kSrtpAes128CmSha1_32 will be included in the list of supported ciphers
* during negotiation. It will only be used if both peers support it and no
* other ciphers get preferred.
*/
@property(nonatomic, assign) BOOL srtpEnableAes128Sha1_32CryptoCipher;
/**
* If set to true, the crypto cipher SRTP_AES128_CM_SHA1_80 will be included in
* the list of supported ciphers during negotiation.
*/
@property(nonatomic, assign) BOOL srtpEnableAes128Sha1_80CryptoCipher;
/**
* If set to true, encrypted RTP header extensions as defined in RFC 6904
* will be negotiated. They will only be used if both peers support them.
*/
@property(nonatomic, assign) BOOL srtpEnableEncryptedRtpHeaderExtensions;
/**
* If set all RtpSenders must have an FrameEncryptor attached to them before
* they are allowed to send packets. All RtpReceivers must have a
* FrameDecryptor attached to them before they are able to receive packets.
*/
@property(nonatomic, assign) BOOL sframeRequireFrameEncryption;
/**
* Initializes CryptoOptions with all possible options set explicitly. This
* is done when converting from a native RTCConfiguration.crypto_options.
*/
- (instancetype)
initWithSrtpEnableGcmCryptoSuites:(BOOL)srtpEnableGcmCryptoSuites
srtpPreferGcmCryptoSuites:(BOOL)srtpPreferGcmCryptoSuites
srtpEnableAes128Sha1_32CryptoCipher:
(BOOL)srtpEnableAes128Sha1_32CryptoCipher
srtpEnableAes128Sha1_80CryptoCipher:
(BOOL)srtpEnableAes128Sha1_80CryptoCipher
srtpEnableEncryptedRtpHeaderExtensions:
(BOOL)srtpEnableEncryptedRtpHeaderExtensions
sframeRequireFrameEncryption:(BOOL)sframeRequireFrameEncryption
NS_DESIGNATED_INITIALIZER;
- (instancetype)init NS_UNAVAILABLE;
@end
NS_ASSUME_NONNULL_END