Example #1
0
    def toDer(self):
        """
        Encode the public key into DER.

        :return: The encoded DER syntax tree.
        :rtype: DerNode
        """
        return DerNode.parse(self._keyDer)
Example #2
0
    def test_extension(self):
        #now add an extension

        name = "/hello/kitty"
        trustClass = 0
        trustLevel = 300
        extValueRoot = DerSequence()
        extValueName = DerOctetString(Blob(name).buf())
        extValueTrustClass = DerInteger(trustClass)
        extValueTrustLevel = DerInteger(trustLevel)

        extValueRoot.addChild(extValueName)
        extValueRoot.addChild(extValueTrustClass)
        extValueRoot.addChild(extValueTrustLevel)

        extValueData = extValueRoot.encode()

        oidString = "1.3.6.1.5.32.1"
        isCritical = True
        certExtension = CertificateExtension(oidString, isCritical, extValueData)
        self.toyCert.encode()
        cert = Certificate(self.toyCert)
        cert.addExtension(certExtension)

        cert.encode()
        certData = cert.getContent()
        plainData = Data()
        plainData.setContent(certData)
        # The constructor Certificate(Data) calls decode().
        decodedCert = Certificate(plainData)
        self.assertEqual(1, len(decodedCert.getExtensionList()),
          "Wrong number of certificate extensions after decoding")

        decodedExtension = decodedCert.getExtensionList()[0]
        self.assertEqual(oidString, str(decodedExtension.getOid()),
          "Certificate extension has the wrong OID after decoding")
        self.assertEqual(isCritical, decodedExtension.getIsCritical(),
          "Certificate extension has the wrong isCritical value after decoding")

        # Decode and check the extension value.
        parsedExtValue = DerNode.parse(decodedExtension.getValue().buf())
        decodedExtValueRoot = parsedExtValue.getChildren()
        self.assertEqual(3, len(decodedExtValueRoot),
          "Wrong number of certificate extension value items after decoding")

        decodedName = decodedExtValueRoot[0]
        decodedTrustClass = decodedExtValueRoot[1]
        decodedTrustLevel = decodedExtValueRoot[2]
        # Use Blob to get a string.
        self.assertEqual(name, Blob(decodedName.toVal()).toRawStr(),
          "Wrong extension value name after decoding")
        self.assertEqual(trustClass, decodedTrustClass.toVal(),
          "Wrong extension value trust class after decoding")
        self.assertEqual(trustLevel, decodedTrustLevel.toVal(),
          "Wrong extension value trust level after decoding")
Example #3
0
    def test_extension(self):
        #now add an extension

        name = "/hello/kitty"
        trustClass = 0
        trustLevel = 300
        extValueRoot = DerSequence()
        extValueName = DerOctetString(Blob(name).buf())
        extValueTrustClass = DerInteger(trustClass)
        extValueTrustLevel = DerInteger(trustLevel)

        extValueRoot.addChild(extValueName)
        extValueRoot.addChild(extValueTrustClass)
        extValueRoot.addChild(extValueTrustLevel)

        extValueData = extValueRoot.encode()

        oidString = "1.3.6.1.5.32.1"
        isCritical = True
        certExtension = CertificateExtension(oidString, isCritical, extValueData)
        self.toyCert.encode()
        cert = Certificate(self.toyCert)
        cert.addExtension(certExtension)

        cert.encode()
        certData = cert.getContent()
        plainData = Data()
        plainData.setContent(certData)
        # The constructor Certificate(Data) calls decode().
        decodedCert = Certificate(plainData)
        self.assertEqual(1, len(decodedCert.getExtensionList()),
          "Wrong number of certificate extensions after decoding")

        decodedExtension = decodedCert.getExtensionList()[0]
        self.assertEqual(oidString, str(decodedExtension.getOid()),
          "Certificate extension has the wrong OID after decoding")
        self.assertEqual(isCritical, decodedExtension.getIsCritical(),
          "Certificate extension has the wrong isCritical value after decoding")

        # Decode and check the extension value.
        parsedExtValue = DerNode.parse(decodedExtension.getValue().buf())
        decodedExtValueRoot = parsedExtValue.getChildren()
        self.assertEqual(3, len(decodedExtValueRoot),
          "Wrong number of certificate extension value items after decoding")

        decodedName = decodedExtValueRoot[0]
        decodedTrustClass = decodedExtValueRoot[1]
        decodedTrustLevel = decodedExtValueRoot[2]
        # Use Blob to get a string.
        self.assertEqual(name, Blob(decodedName.toVal()).toRawStr(),
          "Wrong extension value name after decoding")
        self.assertEqual(trustClass, decodedTrustClass.toVal(),
          "Wrong extension value trust class after decoding")
        self.assertEqual(trustLevel, decodedTrustLevel.toVal(),
          "Wrong extension value trust level after decoding")