BBASMBDTLSEncryptModule.h 2.31 KB
//
//  BBASMBDTLSEncryptModule.h
//  BBAMNPCrypto
//
//  Created by baidu on 2019/5/7.
//  Copyright © 2019 Baidu. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface BBASMBDTLSDHPublicKey : NSObject <NSCoding, NSCopying>

/// 公钥数据
@property (strong, nonatomic) NSData *publicKey;
/// 标识采用哪一组参数
@property (assign, nonatomic) int groupId;
/// DH密钥因子
@property (nonatomic, assign) long dhSecretKey;

- (instancetype)initWithKey:(NSData *)key groupId:(int)groupId;

@end

@interface BBASMBDTLSEncryptModule : NSObject

/**
 * @brief 对数据进行RSA加密,秘钥由加密库保管
 *
 * @param data 需要加密的数据
 * @return 加密好的数据
 */
+ (NSData *)encryptUseRSA:(NSData *)data isUseBdtlsPublicKey:(BOOL)isUse;

/**
 * @brief 对数据进行RSA解密,秘钥由加密库保管
 *
 * @param data 需要解密的数据
 * @return 解密好的数据
 */
+ (NSData *)decryptUseRSA:(NSData *)data isUseBdtlsPublicKey:(BOOL)isUse;

/**
 * @brief 对数据进行AES加密
 *
 * @param data 需要加密的数据
 * @param secretKey 加密使用的秘钥
 * @return 加密好的数据
 */
+ (NSData *)encryptUseAES:(NSData *)data secretKey:(NSData *)secretKey;

/**
 * @brief 对数据进行AES解密
 *
 * @param data 需要解密的数据
 * @param secretKey 解密使用的秘钥
 * @return 解密好的数据
 */
+ (NSData *)decryptUseAES:(NSData *)data secretKey:(NSData *)secretKey;

/**
 * @brief 获取DH公钥
 *
 * @return 公钥
 */
+ (BBASMBDTLSDHPublicKey *)getDHPublicKey;

/**
 * @brief 获取DH秘钥
 *
 * @param pubKey DH公钥(从server获取)
 * @return DH秘钥
 */
+ (NSData *)getSecretKeyWithPublicKey:(BBASMBDTLSDHPublicKey *)pubKey;

/**
* @brief 高低位字节反转
*
* @param originData 原始数据
* @return 高低位反转后的结果
*/
+ (NSData *)reverseBytesOrderFrom:(NSData *)originData;

/**
* @brief 安全的判断数据范围是否合法
*
* @param range 待判断数据的范围
* @param data 待判断的数据
* @return 判断结果,是否合法
*/
+ (BOOL)isRangeValidWith:(NSRange)range from:(NSData *)data;

/// @brief 设置包的RSA的公&钥
/// @param confsk 加密公&钥
/// @param confskId 宿主标识
+ (void)setPackageRSAPublicKey:(NSString *)confsk confskIdentity:(long)confskId;

NS_ASSUME_NONNULL_END

@end