Python socket.IPPROTO_ESP属性代码示例

本文整理汇总了Python中socket.IPPROTO_ESP属性的典型用法代码示例。如果您正苦于以下问题:Python socket.IPPROTO_ESP属性的具体用法?Python socket.IPPROTO_ESP怎么用?Python socket.IPPROTO_ESP使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在模块socket的用法示例。

在下文中一共展示了socket.IPPROTO_ESP属性的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: test_getprotobyname

# 需要导入模块: import socket [as 别名]
# 或者: from socket import IPPROTO_ESP [as 别名]
def test_getprotobyname(self):
        '''Tests _socket.getprotobyname'''
        #IP and CPython
        proto_map = {
                    "icmp": _socket.IPPROTO_ICMP,
                    "ip": _socket.IPPROTO_IP,
                    "tcp": _socket.IPPROTO_TCP,
                    "udp": _socket.IPPROTO_UDP,
        }
        #supported only by IP
        if is_cli:
            proto_map.update(
                {"dstopts": _socket.IPPROTO_DSTOPTS,
                "none": _socket.IPPROTO_NONE,
                "raw": _socket.IPPROTO_RAW,
                "ipv4": _socket.IPPROTO_IPV4,
                "ipv6": _socket.IPPROTO_IPV6,
                "esp": _socket.IPPROTO_ESP,
                "fragment": _socket.IPPROTO_FRAGMENT,
                "nd": _socket.IPPROTO_ND,
                "icmpv6": _socket.IPPROTO_ICMPV6,
                "routing": _socket.IPPROTO_ROUTING,
                "pup": _socket.IPPROTO_PUP, #http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=21918
                "ggp": _socket.IPPROTO_GGP, #http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=21918
                })
        for proto_name, good_val in proto_map.items():
            temp_val = _socket.getprotobyname(proto_name)
            self.assertEqual(temp_val, good_val)
        #negative cases
        bad_list = ["", "blah", "i"]
        for name in bad_list:
            self.assertRaises(_socket.error, _socket.getprotobyname, name) 
开发者ID:IronLanguages,项目名称:ironpython3,代码行数:37,代码来源:test__socket.py


示例2: _encrypt_esp

# 需要导入模块: import socket [as 别名]
# 或者: from socket import IPPROTO_ESP [as 别名]
def _encrypt_esp(self, pkt, seq_num=None, iv=None):
        if iv is None:
            iv = self.crypt_algo.generate_iv()
        else:
            if len(iv) != self.crypt_algo.iv_size:
                raise TypeError('iv length must be %s' % self.crypt_algo.iv_size)
        esp = _ESPPlain(spi=self.spi, seq=seq_num or self.seq_num, iv=iv)
        if self.tunnel_header:
            tunnel = self.tunnel_header.copy()
            if tunnel.version == 4:
                del tunnel.proto
                del tunnel.len
                del tunnel.chksum
            else:
                del tunnel.nh
                del tunnel.plen
            pkt = tunnel.__class__(str(tunnel / pkt))
        ip_header, nh, payload = split_for_transport(pkt, socket.IPPROTO_ESP)
        esp.data = payload
        esp.nh = nh
        esp = self.crypt_algo.pad(esp)
        esp = self.crypt_algo.encrypt(esp, self.crypt_key)
        self.auth_algo.sign(esp, self.auth_key)
        if self.nat_t_header:
            nat_t_header = self.nat_t_header.copy()
            nat_t_header.chksum = 0
            del nat_t_header.len
            if ip_header.version == 4:
                del ip_header.proto
            else:
                del ip_header.nh
            ip_header /= nat_t_header
        if ip_header.version == 4:
            ip_header.len = len(ip_header) + len(esp)
            del ip_header.chksum
            ip_header = ip_header.__class__(str(ip_header))
        else:
            ip_header.plen = len(ip_header.payload) + len(esp)
        # sequence number must always change, unless specified by the user
        if seq_num is None:
            self.seq_num += 1
        return ip_header / esp 
开发者ID:theralfbrown,项目名称:smod-1,代码行数:56,代码来源:ipsec.py


示例3: _encrypt_esp

# 需要导入模块: import socket [as 别名]
# 或者: from socket import IPPROTO_ESP [as 别名]
def _encrypt_esp(self, pkt, seq_num=None, iv=None, esn_en=None, esn=None):
        if iv is None:
            iv = self.crypt_algo.generate_iv()
        else:
            if len(iv) != self.crypt_algo.iv_size:
                raise TypeError('iv length must be %s' % self.crypt_algo.iv_size)  # noqa: E501
        esp = _ESPPlain(spi=self.spi, seq=seq_num or self.seq_num, iv=iv)
        if self.tunnel_header:
            tunnel = self.tunnel_header.copy()
            if tunnel.version == 4:
                del tunnel.proto
                del tunnel.len
                del tunnel.chksum
            else:
                del tunnel.nh
                del tunnel.plen
            pkt = tunnel.__class__(raw(tunnel / pkt))
        ip_header, nh, payload = split_for_transport(pkt, socket.IPPROTO_ESP)
        esp.data = payload
        esp.nh = nh
        esp = self.crypt_algo.pad(esp)
        esp = self.crypt_algo.encrypt(self, esp, self.crypt_key,
                                      esn_en=esn_en or self.esn_en,
                                      esn=esn or self.esn)
        self.auth_algo.sign(esp, self.auth_key)
        if self.nat_t_header:
            nat_t_header = self.nat_t_header.copy()
            nat_t_header.chksum = 0
            del nat_t_header.len
            if ip_header.version == 4:
                del ip_header.proto
            else:
                del ip_header.nh
            ip_header /= nat_t_header
        if ip_header.version == 4:
            ip_header.len = len(ip_header) + len(esp)
            del ip_header.chksum
            ip_header = ip_header.__class__(raw(ip_header))
        else:
            ip_header.plen = len(ip_header.payload) + len(esp)
        # sequence number must always change, unless specified by the user
        if seq_num is None:
            self.seq_num += 1
        return ip_header / esp 
开发者ID:secdev,项目名称:scapy,代码行数:58,代码来源:ipsec.py


示例4: _encrypt_esp

# 需要导入模块: import socket [as 别名]
# 或者: from socket import IPPROTO_ESP [as 别名]
def _encrypt_esp(self, pkt, seq_num=None, iv=None):
        if iv is None:
            iv = self.crypt_algo.generate_iv()
            if self.crypt_salt:
                iv = self.crypt_salt + iv
        else:
            if len(iv) != self.crypt_algo.iv_size:
                raise TypeError('iv length must be %s' % self.crypt_algo.iv_size)
        esp = _ESPPlain(spi=self.spi, seq=seq_num or self.seq_num, iv=iv)
        if self.tunnel_header:
            tunnel = self.tunnel_header.copy()
            if tunnel.version == 4:
                del tunnel.proto
                del tunnel.len
                del tunnel.chksum
            else:
                del tunnel.nh
                del tunnel.plen
            pkt = tunnel.__class__(bytes(tunnel / pkt))
        ip_header, nh, payload = split_for_transport(pkt, socket.IPPROTO_ESP)
        esp.data = payload
        esp.nh = nh
        esp = self.crypt_algo.pad(esp)
        esp = self.crypt_algo.encrypt(esp, self.crypt_key)
        self.auth_algo.sign(esp, self.auth_key)
        if self.nat_t_header:
            nat_t_header = self.nat_t_header.copy()
            nat_t_header.chksum = 0
            del nat_t_header.len
            if ip_header.version == 4:
                del ip_header.proto
            else:
                del ip_header.nh
            ip_header /= nat_t_header
        if ip_header.version == 4:
            ip_header.len = len(ip_header) + len(esp)
            del ip_header.chksum
            ip_header = ip_header.__class__(bytes(ip_header))
        else:
            ip_header.plen = len(ip_header.payload) + len(esp)
        # sequence number must always change, unless specified by the user
        if seq_num is None:
            self.seq_num += 1
        return ip_header / esp 
开发者ID:phaethon,项目名称:kamene,代码行数:58,代码来源:ipsec.py



注:本文中的socket.IPPROTO_ESP属性示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。