OVMS3-idf/components/test/TestCaseScript/SSLTest/Capability.py
Yinling 90e57cdf8f add auto generated test folder to components:
1. add test cases and related scripts
2. add CI config files
read README.md for detail
2016-10-11 17:19:40 +11:00

90 lines
3.2 KiB
Python
Executable file

class SSLCapability(object):
CAPABILITY_TYPE = ["version", "cipher_suite", "fragment_size", # for hello capability negotiation
"verify_server", "verify_client", # if support verify server/client
"key_algorithm", "key_encoding", "pem_encryption", # what kind of private it supports
"certificate_encoding", "certificate_digest", # what kind of certificate it supports
]
SSL_TYPE = ("TargetClient", "TargetServer", "PCClient", "PCServer")
def __init__(self, typ, **kwargs):
assert typ in self.SSL_TYPE
self.type = typ
self.capability = dict.fromkeys(self.CAPABILITY_TYPE, None)
for kw in kwargs:
self.capability[kw] = kwargs[kw]
for kw in self.capability:
assert self.capability[kw] is not None
pass
def get(self, kw):
return self.capability[kw]
def set(self, **kwargs):
for kw in kwargs:
self.capability[kw] = kwargs[kw]
pass
class TargetSSLCapability(SSLCapability):
DEFAULT_CAPABILITY = {
"version": ["SSLv23_2"],
"cipher_suite": ["TLS_RSA_WITH_AES_128_CBC_SHA",
"TLS_RSA_WITH_AES_256_CBC_SHA",
"TLS_RSA_WITH_RC4_128_SHA",
"TLS_RSA_WITH_RC4_128_MD5"],
"fragment_size": [2048, 4096, 8192],
"verify_server": True,
"verify_client": False,
"key_algorithm": ["RSA512", "RSA1024", "RSA2048", "RSA4096"],
"key_encoding": ["PEM", "DER"],
"pem_encryption": [None, "aes128", "aes256"],
"certificate_encoding": ["PEM", "DER"],
"certificate_digest": ["md5", "sha1", "sha256", "sha384", "sha512"],
}
def __init__(self, typ, **kwargs):
assert typ == "TargetClient" or typ == "TargetServer"
capability = dict(self.DEFAULT_CAPABILITY)
for kw in kwargs:
capability[kw] = kwargs[kw]
SSLCapability.__init__(self, typ, **capability)
pass
pass
class PCSSLCapability(SSLCapability):
DEFAULT_CAPABILITY = {
"version": ["SSLv23", "SSLv20", "SSLv30", "TLSv10", "TLSv11", "TLSv12"],
"cipher_suite": ["TLS_RSA_WITH_AES_128_CBC_SHA",
"TLS_RSA_WITH_AES_256_CBC_SHA",
"TLS_RSA_WITH_RC4_128_SHA",
"TLS_RSA_WITH_RC4_128_MD5",
"TLS_DH_DSS_WITH_AES_128_CBC_SHA",
"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"],
"fragment_size": [16384],
"verify_server": True,
"verify_client": True,
"key_algorithm": ["RSA512", "RSA1024", "RSA2048", "RSA4096"],
"key_encoding": ["PEM"],
"pem_encryption": [None],
"certificate_encoding": ["PEM"],
"certificate_digest": ["md5", "sha1", "sha256", "sha384", "sha512"],
}
def __init__(self, typ):
assert typ == "PCClient" or typ == "PCServer"
SSLCapability.__init__(self, typ, **self.DEFAULT_CAPABILITY)
pass
pass
def main():
pc = PCSSLCapability("PCClient")
target = TargetSSLCapability("TargetClient")
pass
if __name__ == '__main__':
main()