Skip to content

Commit d90fce9

Browse files
committed
DH: adding rfc2409Group2 parameter too
1 parent 2f92b9b commit d90fce9

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

SwCrypt/SwCrypt.swift

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1531,14 +1531,19 @@ open class CC {
15311531

15321532
public enum DHParam {
15331533
case rfc3526Group5
1534+
case rfc2409Group2
15341535
}
15351536

15361537
//this is stateful in CommonCrypto too, sry
15371538
open class DH {
15381539
fileprivate var ref: CCDHRef? = nil
15391540

15401541
public init(dhParam: DHParam) throws {
1541-
ref = CCDHCreate!(kCCDHRFC3526Group5!)
1542+
if dhParam == .rfc3526Group5 {
1543+
ref = CCDHCreate!(kCCDHRFC3526Group5!)
1544+
} else {
1545+
ref = CCDHCreate!(kCCDHRFC2409Group2!)
1546+
}
15421547
guard ref != nil else {
15431548
throw CCError(.paramError)
15441549
}
@@ -1586,7 +1591,9 @@ open class CC {
15861591
return CCDHCreate != nil &&
15871592
CCDHRelease != nil &&
15881593
CCDHGenerateKey != nil &&
1589-
CCDHComputeKey != nil
1594+
CCDHComputeKey != nil &&
1595+
CCDHParametersCreateFromData != nil &&
1596+
CCDHParametersRelease != nil
15901597
}
15911598

15921599
fileprivate typealias CCDHParameters = UnsafeRawPointer
@@ -1597,6 +1604,11 @@ open class CC {
15971604
getFunc(dl!, f: "kCCDHRFC3526Group5")
15981605
fileprivate static let kCCDHRFC3526Group5 = kCCDHRFC3526Group5M?.pointee
15991606

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+
16001612
fileprivate typealias CCDHCreateT = @convention(c) (
16011613
_ dhParameter: CCDHParameters) -> CCDHRef
16021614
fileprivate static let CCDHCreate: CCDHCreateT? = getFunc(dl!, f: "CCDHCreate")
@@ -1615,6 +1627,16 @@ open class CC {
16151627
_ peerPubKey: UnsafeRawPointer, _ peerPubKeyLen: size_t,
16161628
_ ref: CCDHRef) -> CInt
16171629
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")
16181640
}
16191641

16201642
open class EC {

0 commit comments

Comments
 (0)