Browse Source

Removed extended ASN1 parameters ecBits and ecObject for Elliptic Curve based keys.

Brandon Toms 3 years ago
parent
commit
fb6b848d2c

+ 1 - 13
Sources/CryptoSwift/ASN1/ASN1.swift

@@ -24,8 +24,6 @@ enum ASN1 {
     case NULL = 0x05
     case NULL = 0x05
     case BITSTRING = 0x03
     case BITSTRING = 0x03
     case OCTETSTRING = 0x04
     case OCTETSTRING = 0x04
-    case EC_OBJECT = 0xA0
-    case EC_BITS = 0xA1
 
 
     static func == (lhs: UInt8, rhs: IDENTIFIERS) -> Bool {
     static func == (lhs: UInt8, rhs: IDENTIFIERS) -> Bool {
       lhs == rhs.rawValue
       lhs == rhs.rawValue
@@ -46,6 +44,7 @@ enum ASN1 {
     /// An array of more `ASN1.Node`s
     /// An array of more `ASN1.Node`s
     case sequence(nodes: [Node])
     case sequence(nodes: [Node])
     /// An integer
     /// An integer
+    /// - Note: This ASN1 Encoder makes no assumptions about the sign and bit order of the integers passed in. The conversion from Integer to Data is your responsiblity.
     case integer(data: Data)
     case integer(data: Data)
     /// An objectIdentifier
     /// An objectIdentifier
     case objectIdentifier(data: Data)
     case objectIdentifier(data: Data)
@@ -56,13 +55,6 @@ enum ASN1 {
     /// An octetString
     /// An octetString
     case octetString(data: Data)
     case octetString(data: Data)
 
 
-    //Exteneded Params
-
-    /// Elliptic Curve specific objectIdentifier
-    case ecObject(data: Data)
-    /// Elliptic Curve specific bitString
-    case ecBits(data: Data)
-
     var description: String {
     var description: String {
       ASN1.printNode(self, level: 0)
       ASN1.printNode(self, level: 0)
     }
     }
@@ -82,10 +74,6 @@ enum ASN1 {
         str.append("\(prefix)ObjectID: \(oid.toHexString())")
         str.append("\(prefix)ObjectID: \(oid.toHexString())")
       case .octetString(let os):
       case .octetString(let os):
         str.append("\(prefix)OctetString: \(os.toHexString())")
         str.append("\(prefix)OctetString: \(os.toHexString())")
-      case .ecObject(let ecObj):
-        str.append("\(prefix)EC Object: \(ecObj.toHexString())")
-      case .ecBits(let ecBits):
-        str.append("\(prefix)EC Bits: \(ecBits.toHexString())")
       case .sequence(let nodes):
       case .sequence(let nodes):
         str.append("\(prefix)Sequence:")
         str.append("\(prefix)Sequence:")
         nodes.forEach { str.append(printNode($0, level: level + 1)) }
         nodes.forEach { str.append(printNode($0, level: level + 1)) }

+ 0 - 15
Sources/CryptoSwift/ASN1/ASN1Decoder.swift

@@ -84,21 +84,6 @@ extension ASN1 {
           let data = try scanner.consume(length: length)
           let data = try scanner.consume(length: length)
           return .octetString(data: data)
           return .octetString(data: data)
 
 
-        case IDENTIFIERS.EC_OBJECT.rawValue:
-          let length = try scanner.consumeLength()
-          let data = try scanner.consume(length: length)
-          return .objectIdentifier(data: data)
-
-        case IDENTIFIERS.EC_BITS.rawValue:
-          let length = try scanner.consumeLength()
-
-          // There's an extra byte (0x00) after the bit string length in all the keys I've encountered.
-          // I couldn't find a specification that referenced this extra byte, but let's consume it and discard it.
-          _ = try scanner.consume(length: 1)
-
-          let data = try scanner.consume(length: length - 1)
-          return .ecBits(data: data)
-
         default:
         default:
           throw DecodingError.invalidType(value: firstByte)
           throw DecodingError.invalidType(value: firstByte)
       }
       }

+ 0 - 4
Sources/CryptoSwift/ASN1/ASN1Encoder.swift

@@ -34,10 +34,6 @@ extension ASN1 {
           return IDENTIFIERS.NULL.bytes
           return IDENTIFIERS.NULL.bytes
         case .objectIdentifier(let oid):
         case .objectIdentifier(let oid):
           return IDENTIFIERS.OBJECTID.bytes + self.asn1LengthPrefixed(oid.bytes)
           return IDENTIFIERS.OBJECTID.bytes + self.asn1LengthPrefixed(oid.bytes)
-        case .ecObject(let ecObj):
-          return IDENTIFIERS.EC_OBJECT.bytes + self.asn1LengthPrefixed(ecObj.bytes)
-        case .ecBits(let ecBits):
-          return IDENTIFIERS.EC_BITS.bytes + self.asn1LengthPrefixed(ecBits.bytes)
         case .sequence(let nodes):
         case .sequence(let nodes):
           return IDENTIFIERS.SEQUENCE.bytes + self.asn1LengthPrefixed( nodes.reduce(into: Array<UInt8>(), { partialResult, node in
           return IDENTIFIERS.SEQUENCE.bytes + self.asn1LengthPrefixed( nodes.reduce(into: Array<UInt8>(), { partialResult, node in
             partialResult += encode(node)
             partialResult += encode(node)