ECkeyUtils.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //
  2. // ECkeyUtils.h
  3. // RSADemo
  4. //
  5. // Created by 武建明 on 2018/6/20.
  6. // Copyright © 2018年 Ive. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <openssl/pem.h>
  10. #import <openssl/obj_mac.h>
  11. #import <openssl/ecdh.h>
  12. @interface ECkeyPairs : NSObject
  13. /**
  14. 私钥PEM
  15. */
  16. @property (strong, nonatomic) NSString *privatePem; // pem格式
  17. @property (strong, nonatomic) NSString *privateKey; // 普通格式
  18. /**
  19. 公钥PEM
  20. */
  21. @property (strong, nonatomic) NSString *publicPem; // pem格式
  22. @property (strong, nonatomic) NSString *publicKey; // 普通格式
  23. /**
  24. 三方公钥
  25. */
  26. @property (strong, nonatomic) NSString *peerPublicPem; // pem格式
  27. @property (strong, nonatomic) NSString *peerPublicKey; // 普通格式
  28. /**
  29. 生成的协商密钥
  30. */
  31. @property (strong, nonatomic) NSString *shareKey;
  32. @end
  33. @interface ECkeyUtils : NSObject
  34. @property (strong, nonatomic)ECkeyPairs *eckeyPairs;
  35. /**
  36. 生成ECC(椭圆曲线加密算法)的私钥和公钥
  37. */
  38. - (void)generatekeyPairs;
  39. /**
  40. 根据三方公钥和自持有的私钥经过DH(Diffie-Hellman)算法生成的协商密钥
  41. @param peerPubPem 三方公钥
  42. @param privatePem 自持有私钥
  43. @param length 协商密钥长度
  44. @return 协商密钥
  45. */
  46. + (NSString *)getShareKeyFromPeerPubPem:(NSString *)peerPubPem
  47. privatePem:(NSString *)privatePem
  48. length:(int)length;
  49. + (EC_KEY *)publicKeyFromPEM:(NSString *)publicKeyPEM;
  50. + (EC_KEY *)privateKeyFromPEM:(NSString *)privateKeyPEM;
  51. // pem证书转换为普通证书
  52. + (NSString *)getKeyFromPemKey:(NSString *)pemKey isPrivate:(BOOL)isPrivate;
  53. // 普通证书转换为pem证书
  54. + (NSString *)getPemKeyFromKey:(NSString *)key isPrivate:(BOOL)isPrivate;
  55. @end