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')
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")
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')
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)
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
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
def test_decode(self): realCert = Certificate(Name("/tmp")) realCert.setContent(REAL_CERT) realCert.decode() self.assertEqual(REAL_CERT_STRING, str(realCert))
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")
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
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")))
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
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")))