本文整理汇总了Python中tlslite.tlsrecordlayer.TLSRecordLayer.write方法的典型用法代码示例。如果您正苦于以下问题:Python TLSRecordLayer.write方法的具体用法?Python TLSRecordLayer.write怎么用?Python TLSRecordLayer.write使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tlslite.tlsrecordlayer.TLSRecordLayer
的用法示例。
在下文中一共展示了TLSRecordLayer.write方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_write_with_BEAST_record_splitting
# 需要导入模块: from tlslite.tlsrecordlayer import TLSRecordLayer [as 别名]
# 或者: from tlslite.tlsrecordlayer.TLSRecordLayer import write [as 别名]
def test_write_with_BEAST_record_splitting(self):
mock_sock = MockSocket(bytearray(0))
record_layer = TLSRecordLayer(mock_sock)
record_layer.version = (3, 1)
record_layer.closed = False
record_layer._recordLayer.calcPendingStates(
CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, bytearray(48), bytearray(32), bytearray(32), None
)
record_layer._recordLayer.changeWriteState()
record_layer.write(bytearray(32))
self.assertEqual(len(mock_sock.sent), 2)
msg1 = mock_sock.sent[0]
self.assertEqual(
bytearray(
b"\x17"
+ b"\x03\x01" # application data
+ b"\x00\x20" # TLSv1.0 # length 32 bytes = data(1) + MAC(20) + padding(11)
),
msg1[:5],
)
self.assertEqual(len(msg1[5:]), 32)
msg2 = mock_sock.sent[1]
self.assertEqual(
bytearray(
b"\x17"
+ b"\x03\x01" # application data
+ b"\x00\x40" # TLSv1.0 # length 64 bytes = data(31) + MAC(20) + padding(13)
),
msg2[:5],
)
self.assertEqual(len(msg2[5:]), 64)
示例2: test_write_with_BEAST_record_splitting_and_empty_write
# 需要导入模块: from tlslite.tlsrecordlayer import TLSRecordLayer [as 别名]
# 或者: from tlslite.tlsrecordlayer.TLSRecordLayer import write [as 别名]
def test_write_with_BEAST_record_splitting_and_empty_write(self):
mock_sock = MockSocket(bytearray(0))
record_layer = TLSRecordLayer(mock_sock)
record_layer.version = (3, 1)
record_layer.closed = False
record_layer._recordLayer.calcPendingStates(
CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA,
bytearray(48),
bytearray(32),
bytearray(32),
None)
record_layer._recordLayer.changeWriteState()
record_layer.write(bytearray(0))
self.assertEqual(len(mock_sock.sent), 1)
msg1 = mock_sock.sent[0]
self.assertEqual(bytearray(
b'\x17' + # application data
b'\x03\x01' + # TLSv1.0
b'\x00\x20' # length 32 bytes = data(0) + MAC(20) + padding(12)
), msg1[:5])
self.assertEqual(len(msg1[5:]), 32)
示例3: test_full_connection_with_external_server
# 需要导入模块: from tlslite.tlsrecordlayer import TLSRecordLayer [as 别名]
# 或者: from tlslite.tlsrecordlayer.TLSRecordLayer import write [as 别名]
#.........这里部分代码省略.........
for result in record_layer._getMsg(ContentType.handshake, HandshakeType.server_hello):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
server_hello = result
self.assertEqual(ServerHello, type(server_hello))
for result in record_layer._getMsg(ContentType.handshake, HandshakeType.certificate, CertificateType.x509):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
server_certificate = result
self.assertEqual(Certificate, type(server_certificate))
for result in record_layer._getMsg(ContentType.handshake, HandshakeType.server_hello_done):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
server_hello_done = result
self.assertEqual(ServerHelloDone, type(server_hello_done))
public_key = server_certificate.certChain.getEndEntityPublicKey()
premasterSecret = bytearray(48)
premasterSecret[0] = 3 # 'cause we negotiatied TLSv1.2
premasterSecret[1] = 3
encryptedPreMasterSecret = public_key.encrypt(premasterSecret)
client_key_exchange = ClientKeyExchange(CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, (3, 3))
client_key_exchange.createRSA(encryptedPreMasterSecret)
for result in record_layer._sendMsg(client_key_exchange):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
master_secret = calcMasterSecret(
(3, 3), CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, premasterSecret, client_hello.random, server_hello.random
)
record_layer._calcPendingStates(
CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA, master_secret, client_hello.random, server_hello.random, None
)
for result in record_layer._sendMsg(ChangeCipherSpec()):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
record_layer._changeWriteState()
handshake_hashes = record_layer._handshake_hash.digest("sha256")
verify_data = PRF_1_2(master_secret, b"client finished", handshake_hashes, 12)
finished = Finished((3, 3)).create(verify_data)
for result in record_layer._sendMsg(finished):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
for result in record_layer._getMsg(ContentType.change_cipher_spec):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
change_cipher_spec = result
self.assertEqual(ChangeCipherSpec, type(change_cipher_spec))
record_layer._changeReadState()
handshake_hashes = record_layer._handshake_hash.digest("sha256")
server_verify_data = PRF_1_2(master_secret, b"server finished", handshake_hashes, 12)
for result in record_layer._getMsg(ContentType.handshake, HandshakeType.finished):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
server_finished = result
self.assertEqual(Finished, type(server_finished))
self.assertEqual(server_verify_data, server_finished.verify_data)
record_layer._handshakeDone(resumed=False)
record_layer.write(bytearray(b"text\n"))
record_layer.close()
示例4: test_full_connection_with_RSA_kex
# 需要导入模块: from tlslite.tlsrecordlayer import TLSRecordLayer [as 别名]
# 或者: from tlslite.tlsrecordlayer.TLSRecordLayer import write [as 别名]
#.........这里部分代码省略.........
srv_client_key_exchange = result
srv_premaster_secret = srv_private_key.decrypt(srv_client_key_exchange.encryptedPreMasterSecret)
self.assertEqual(bytearray(b"\x03\x03" + b"\x00" * 46), srv_premaster_secret)
srv_master_secret = calcMasterSecret(
srv_record_layer.version,
CipherSuite.TLS_RSA_WITH_AES_128_CBC_SHA,
srv_premaster_secret,
srv_client_hello.random,
srv_server_hello.random,
)
srv_record_layer._calcPendingStates(
srv_cipher_suite, srv_master_secret, srv_client_hello.random, srv_server_hello.random, None
)
for result in srv_record_layer._getMsg(ContentType.change_cipher_spec):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
srv_change_cipher_spec = result
self.assertEqual(ChangeCipherSpec, type(srv_change_cipher_spec))
srv_record_layer._changeReadState()
srv_handshakeHashes = srv_record_layer._handshake_hash.digest("sha256")
srv_verify_data = PRF_1_2(srv_master_secret, b"client finished", srv_handshakeHashes, 12)
for result in srv_record_layer._getMsg(ContentType.handshake, HandshakeType.finished):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
srv_finished = result
self.assertEqual(Finished, type(srv_finished))
self.assertEqual(srv_verify_data, srv_finished.verify_data)
for result in srv_record_layer._sendMsg(ChangeCipherSpec()):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
srv_record_layer._changeWriteState()
srv_handshakeHashes = srv_record_layer._handshake_hash.digest("sha256")
srv_verify_data = PRF_1_2(srv_master_secret, b"server finished", srv_handshakeHashes, 12)
for result in srv_record_layer._sendMsg(Finished((3, 3)).create(srv_verify_data)):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
srv_record_layer._handshakeDone(resumed=False)
#
# client part
#
for result in record_layer._getMsg(ContentType.change_cipher_spec):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
change_cipher_spec = result
self.assertEqual(ChangeCipherSpec, type(change_cipher_spec))
record_layer._changeReadState()
handshake_hashes = record_layer._handshake_hash.digest("sha256")
server_verify_data = PRF_1_2(master_secret, b"server finished", handshake_hashes, 12)
for result in record_layer._getMsg(ContentType.handshake, HandshakeType.finished):
if result in (0, 1):
raise Exception("blocking socket")
else:
break
server_finished = result
self.assertEqual(Finished, type(server_finished))
self.assertEqual(server_verify_data, server_finished.verify_data)
record_layer._handshakeDone(resumed=False)
# try sending data
record_layer.write(bytearray(b"text\n"))
# try recieving data
data = srv_record_layer.read(10)
self.assertEqual(data, bytearray(b"text\n"))
record_layer.close()
srv_record_layer.close()