@@ -1531,14 +1531,19 @@ open class CC {
1531
1531
1532
1532
public enum DHParam {
1533
1533
case rfc3526Group5
1534
+ case rfc2409Group2
1534
1535
}
1535
1536
1536
1537
//this is stateful in CommonCrypto too, sry
1537
1538
open class DH {
1538
1539
fileprivate var ref : CCDHRef ? = nil
1539
1540
1540
1541
public init ( dhParam: DHParam ) throws {
1541
- ref = CCDHCreate!( kCCDHRFC3526Group5!)
1542
+ if dhParam == . rfc3526Group5 {
1543
+ ref = CCDHCreate!( kCCDHRFC3526Group5!)
1544
+ } else {
1545
+ ref = CCDHCreate!( kCCDHRFC2409Group2!)
1546
+ }
1542
1547
guard ref != nil else {
1543
1548
throw CCError ( . paramError)
1544
1549
}
@@ -1586,7 +1591,9 @@ open class CC {
1586
1591
return CCDHCreate != nil &&
1587
1592
CCDHRelease != nil &&
1588
1593
CCDHGenerateKey != nil &&
1589
- CCDHComputeKey != nil
1594
+ CCDHComputeKey != nil &&
1595
+ CCDHParametersCreateFromData != nil &&
1596
+ CCDHParametersRelease != nil
1590
1597
}
1591
1598
1592
1599
fileprivate typealias CCDHParameters = UnsafeRawPointer
@@ -1597,6 +1604,11 @@ open class CC {
1597
1604
getFunc ( dl!, f: " kCCDHRFC3526Group5 " )
1598
1605
fileprivate static let kCCDHRFC3526Group5 = kCCDHRFC3526Group5M? . pointee
1599
1606
1607
+ fileprivate typealias kCCDHRFC2409Group2TM = UnsafePointer < CCDHParameters >
1608
+ fileprivate static let kCCDHRFC2409Group2M : kCCDHRFC2409Group2TM ? =
1609
+ getFunc ( dl!, f: " kCCDHRFC2409Group2 " )
1610
+ fileprivate static let kCCDHRFC2409Group2 = kCCDHRFC2409Group2M? . pointee
1611
+
1600
1612
fileprivate typealias CCDHCreateT = @convention ( c) (
1601
1613
_ dhParameter: CCDHParameters ) -> CCDHRef
1602
1614
fileprivate static let CCDHCreate : CCDHCreateT ? = getFunc ( dl!, f: " CCDHCreate " )
@@ -1615,6 +1627,16 @@ open class CC {
1615
1627
_ peerPubKey: UnsafeRawPointer , _ peerPubKeyLen: size_t ,
1616
1628
_ ref: CCDHRef ) -> CInt
1617
1629
fileprivate static let CCDHComputeKey : CCDHComputeKeyT ? = getFunc ( dl!, f: " CCDHComputeKey " )
1630
+
1631
+ fileprivate typealias CCDHParametersCreateFromDataT = @convention ( c) (
1632
+ _ p: UnsafeRawPointer , _ pLen: Int ,
1633
+ _ g: UnsafeRawPointer , _ gLen: Int ,
1634
+ _ l: Int ) -> CCDHParameters
1635
+ fileprivate static let CCDHParametersCreateFromData : CCDHParametersCreateFromDataT ? = getFunc ( dl!, f: " CCDHParametersCreateFromData " )
1636
+
1637
+ fileprivate typealias CCDHParametersReleaseT = @convention ( c) (
1638
+ _ parameters: CCDHParameters ) -> Void
1639
+ fileprivate static let CCDHParametersRelease : CCDHParametersReleaseT ? = getFunc ( dl!, f: " CCDHParametersRelease " )
1618
1640
}
1619
1641
1620
1642
open class EC {
0 commit comments