예제 #1
0
    def test_encode_decode(self):
        self.toyCert.encode()
        cert_data = self.toyCert.getContent()
        decoded_cert = Certificate()
        decoded_cert.setContent(cert_data)
        decoded_cert.decode()

        self.assertEqual(str(self.toyCert), str(decoded_cert), 'Certificate representation changed after encoding')
예제 #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")
예제 #3
0
    def test_encode_decode(self):
        self.toyCert.encode()
        cert_data = self.toyCert.getContent()
        decoded_cert = Certificate()
        decoded_cert.setName(self.toyCert.getName())
        decoded_cert.setContent(cert_data)
        decoded_cert.decode()

        self.assertEqual(str(self.toyCert), str(decoded_cert), 'Certificate representation changed after encoding')
예제 #4
0
    def test_extension(self):
        # TODO: incomplete
        #now add an extension

        self.toyCert.encode()
        extValueRoot = DerSequence()
        extValueName = DerOctetString("/hello/kitty")
        extValueTrustClass = DerInteger(0)
        extValueTrustLevel = DerInteger(10)

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

        extValueData = extValueRoot.encode()

        certExtension = CertificateExtension("1.3.6.1.5.32.1", True, extValueData)
        cert = Certificate(self.toyCert)
        cert.addExtension(certExtension)
예제 #5
0
    def setUp(self):
        cert = Certificate()

        cert._notBefore = 1388100174000
        cert._notAfter = 1388100174000

        cert.addSubjectDescription(
            CertificateSubjectDescription(TEST_OID, "TEST NAME"))
        key = PublicKey(Blob(PUBLIC_KEY))

        cert._publicKey = key
        self.toyCert = cert
예제 #6
0
    def setUp(self):
        cert = Certificate()

        cert._notBefore = 1388100174000
        cert._notAfter = 1388100174000

        cert.addSubjectDescription(CertificateSubjectDescription(TEST_OID, "TEST NAME"))
        key = PublicKey(Blob(PUBLIC_KEY))

        cert._publicKey = key
        self.toyCert = cert
예제 #7
0
    def test_decode(self):
        realCert = Certificate(Name("/tmp"))
        realCert.setContent(REAL_CERT)
        realCert.decode()

        self.assertEqual(REAL_CERT_STRING, str(realCert))
예제 #8
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")
예제 #9
0
    def setUp(self):
        self.toyCertNotBefore = 1388100174000
        self.toyCertNotAfter = 1388100174000
        cert = Certificate()
        cert.setName(
            Name(
                "/test/KEY/ksk-1457560485494/ID-CERT/%FD%00%00%01S%80H%E1%F3"))
        cert.setNotBefore(self.toyCertNotBefore)
        cert.setNotAfter(self.toyCertNotAfter)

        cert.addSubjectDescription(
            CertificateSubjectDescription(TEST_OID, "TEST NAME"))
        key = PublicKey(Blob(PUBLIC_KEY))

        cert.setPublicKeyInfo(key)
        self.toyCert = cert
예제 #10
0
    def test_decode(self):
        realCert = Certificate(Name("/tmp"))
        realCert.setContent(REAL_CERT)
        realCert.decode()

        self.assertEqual(REAL_CERT_STRING, str(realCert))
예제 #11
0
    def test_validity_period_checking(self):
        certificate = Certificate()
        certificate.setName(
            Name("/ndn/site1/KEY/ksk-1416425377094/0123/%FD%00%00%01I%C9%8B"))
        certificate.getMetaInfo().setFreshnessPeriod(3600 * 1000.0)
        certificate.setContent(PUBLIC_KEY)
        certificate.setSignature(self.generateFakeSignature())

        self.assertEqual(
            True,
            certificate.isInValidityPeriod(fromIsoString("20141111T050000")))
        self.assertEqual(
            True,
            certificate.isInValidityPeriod(fromIsoString("20141111T060000")))
        self.assertEqual(
            False,
            certificate.isInValidityPeriod(fromIsoString("20141111T045959")))
        self.assertEqual(
            False,
            certificate.isInValidityPeriod(fromIsoString("20141111T060001")))
예제 #12
0
    def setUp(self):
        self.toyCertNotBefore = 1388100174000
        self.toyCertNotAfter = 1388100174000
        cert = Certificate()
        cert.setName(Name("/test/KEY/ksk-1457560485494/ID-CERT/%FD%00%00%01S%80H%E1%F3"))
        cert.setNotBefore(self.toyCertNotBefore)
        cert.setNotAfter(self.toyCertNotAfter)

        cert.addSubjectDescription(CertificateSubjectDescription(TEST_OID, "TEST NAME"))
        key = PublicKey(Blob(PUBLIC_KEY))

        cert.setPublicKeyInfo(key)
        self.toyCert = cert
예제 #13
0
    def test_validity_period_checking(self):
        certificate = Certificate()
        certificate.setName(
          Name("/ndn/site1/ksk-1416425377094/KEY/0123/%FD%00%00%01I%C9%8B"))
        certificate.getMetaInfo().setFreshnessPeriod(3600 * 1000.0)
        certificate.setContent(PUBLIC_KEY)

        certificate.setSignature(Sha256WithRsaSignature())
        signatureInfo = certificate.getSignature()

        signatureInfo.getKeyLocator().setType(KeyLocatorType.KEYNAME)
        signatureInfo.getKeyLocator().setKeyName(
          Name("/ndn/site1/ksk-2516425377094/KEY"))

        notBefore = fromIsoString("20150819T120000")
        notAfter =  fromIsoString("20150823T120000")
        signatureInfo.getValidityPeriod().setPeriod(notBefore, notAfter)

        signatureInfo.setSignature(SIG_VALUE)

        self.assertEqual(False, certificate.isInValidityPeriod
          (fromIsoString("20150819T115959")))
        self.assertEqual(True,  certificate.isInValidityPeriod
          (fromIsoString("20150819T120000")))
        self.assertEqual(True,  certificate.isInValidityPeriod
          (fromIsoString("20150823T120000")))
        self.assertEqual(False, certificate.isInValidityPeriod
          (fromIsoString("20150823T120001")))
        self.assertEqual(False, certificate.isInValidityPeriod
          (fromIsoString("20150921T130000")))