Python stringprep.in_table_a1() Examples
The following are 8
code examples of stringprep.in_table_a1().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
stringprep
, or try the search function
.
Example #1
Source File: xmpp_stringprep.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 5 votes |
def check_unassigneds(self, string): for c in string: if stringprep.in_table_a1(c): raise UnicodeError("Unassigned code point %s" % repr(c))
Example #2
Source File: xmpp_stringprep.py From learn_python3_spider with MIT License | 5 votes |
def check_unassigneds(self, string): for c in string: if stringprep.in_table_a1(c): raise UnicodeError("Unassigned code point %s" % repr(c))
Example #3
Source File: xmpp_stringprep.py From python-for-android with Apache License 2.0 | 5 votes |
def check_unassigneds(self, string): for c in string: if stringprep.in_table_a1(c): raise UnicodeError, "Unassigned code point %s" % repr(c)
Example #4
Source File: xmpp_stringprep.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def check_unassigneds(self, string): for c in string: if stringprep.in_table_a1(c): raise UnicodeError, "Unassigned code point %s" % repr(c)
Example #5
Source File: saslprep.py From vnpy_crypto with MIT License | 4 votes |
def saslprep(data, prohibit_unassigned_code_points=True): """An implementation of RFC4013 SASLprep. :Parameters: - `data`: The string to SASLprep. Unicode strings (python 2.x unicode, 3.x str) are supported. Byte strings (python 2.x str, 3.x bytes) are ignored. - `prohibit_unassigned_code_points`: True / False. RFC 3454 and RFCs for various SASL mechanisms distinguish between `queries` (unassigned code points allowed) and `stored strings` (unassigned code points prohibited). Defaults to ``True`` (unassigned code points are prohibited). :Returns: The SASLprep'ed version of `data`. """ if not isinstance(data, _text_type): return data if prohibit_unassigned_code_points: prohibited = _PROHIBITED + (stringprep.in_table_a1,) else: prohibited = _PROHIBITED # RFC3454 section 2, step 1 - Map # RFC4013 section 2.1 mappings # Map Non-ASCII space characters to SPACE (U+0020). Map # commonly mapped to nothing characters to, well, nothing. in_table_c12 = stringprep.in_table_c12 in_table_b1 = stringprep.in_table_b1 data = u"".join( [u"\u0020" if in_table_c12(elt) else elt for elt in data if not in_table_b1(elt)]) # RFC3454 section 2, step 2 - Normalize # RFC4013 section 2.2 normalization data = unicodedata.ucd_3_2_0.normalize('NFKC', data) in_table_d1 = stringprep.in_table_d1 if in_table_d1(data[0]): if not in_table_d1(data[-1]): # RFC3454, Section 6, #3. If a string contains any # RandALCat character, the first and last characters # MUST be RandALCat characters. raise ValueError("SASLprep: failed bidirectional check") # RFC3454, Section 6, #2. If a string contains any RandALCat # character, it MUST NOT contain any LCat character. prohibited = prohibited + (stringprep.in_table_d2,) else: # RFC3454, Section 6, #3. Following the logic of #3, if # the first character is not a RandALCat, no other character # can be either. prohibited = prohibited + (in_table_d1,) # RFC3454 section 2, step 3 and 4 - Prohibit and check bidi for char in data: if any(in_table(char) for in_table in prohibited): raise ValueError( "SASLprep: failed prohibited character check") return data
Example #6
Source File: saslprep.py From learn_python3_spider with MIT License | 4 votes |
def saslprep(data, prohibit_unassigned_code_points=True): """An implementation of RFC4013 SASLprep. :Parameters: - `data`: The string to SASLprep. Unicode strings (python 2.x unicode, 3.x str) are supported. Byte strings (python 2.x str, 3.x bytes) are ignored. - `prohibit_unassigned_code_points`: True / False. RFC 3454 and RFCs for various SASL mechanisms distinguish between `queries` (unassigned code points allowed) and `stored strings` (unassigned code points prohibited). Defaults to ``True`` (unassigned code points are prohibited). :Returns: The SASLprep'ed version of `data`. """ if not isinstance(data, _text_type): return data if prohibit_unassigned_code_points: prohibited = _PROHIBITED + (stringprep.in_table_a1,) else: prohibited = _PROHIBITED # RFC3454 section 2, step 1 - Map # RFC4013 section 2.1 mappings # Map Non-ASCII space characters to SPACE (U+0020). Map # commonly mapped to nothing characters to, well, nothing. in_table_c12 = stringprep.in_table_c12 in_table_b1 = stringprep.in_table_b1 data = u"".join( [u"\u0020" if in_table_c12(elt) else elt for elt in data if not in_table_b1(elt)]) # RFC3454 section 2, step 2 - Normalize # RFC4013 section 2.2 normalization data = unicodedata.ucd_3_2_0.normalize('NFKC', data) in_table_d1 = stringprep.in_table_d1 if in_table_d1(data[0]): if not in_table_d1(data[-1]): # RFC3454, Section 6, #3. If a string contains any # RandALCat character, the first and last characters # MUST be RandALCat characters. raise ValueError("SASLprep: failed bidirectional check") # RFC3454, Section 6, #2. If a string contains any RandALCat # character, it MUST NOT contain any LCat character. prohibited = prohibited + (stringprep.in_table_d2,) else: # RFC3454, Section 6, #3. Following the logic of #3, if # the first character is not a RandALCat, no other character # can be either. prohibited = prohibited + (in_table_d1,) # RFC3454 section 2, step 3 and 4 - Prohibit and check bidi for char in data: if any(in_table(char) for in_table in prohibited): raise ValueError( "SASLprep: failed prohibited character check") return data
Example #7
Source File: saslprep.py From edgedb-python with Apache License 2.0 | 4 votes |
def saslprep(data: str, prohibit_unassigned_code_points=True): """An implementation of RFC4013 SASLprep.""" if data == '': return data if prohibit_unassigned_code_points: prohibited = _PROHIBITED + (stringprep.in_table_a1,) else: prohibited = _PROHIBITED # RFC3454 section 2, step 1 - Map # RFC4013 section 2.1 mappings # Map Non-ASCII space characters to SPACE (U+0020). Map # commonly mapped to nothing characters to, well, nothing. in_table_c12 = stringprep.in_table_c12 in_table_b1 = stringprep.in_table_b1 data = u"".join( [u"\u0020" if in_table_c12(elt) else elt for elt in data if not in_table_b1(elt)]) # RFC3454 section 2, step 2 - Normalize # RFC4013 section 2.2 normalization data = unicodedata.ucd_3_2_0.normalize('NFKC', data) in_table_d1 = stringprep.in_table_d1 if in_table_d1(data[0]): if not in_table_d1(data[-1]): # RFC3454, Section 6, #3. If a string contains any # RandALCat character, the first and last characters # MUST be RandALCat characters. raise ValueError("SASLprep: failed bidirectional check") # RFC3454, Section 6, #2. If a string contains any RandALCat # character, it MUST NOT contain any LCat character. prohibited = prohibited + (stringprep.in_table_d2,) else: # RFC3454, Section 6, #3. Following the logic of #3, if # the first character is not a RandALCat, no other character # can be either. prohibited = prohibited + (in_table_d1,) # RFC3454 section 2, step 3 and 4 - Prohibit and check bidi for char in data: if any(in_table(char) for in_table in prohibited): raise ValueError( "SASLprep: failed prohibited character check") return data
Example #8
Source File: saslprep.py From BitTorrent with GNU General Public License v3.0 | 4 votes |
def saslprep(s, allow_unassigned = False): ''' Prepare Unicode string s according to SASLprep: Stringprep Profile for User Names and Passwords, a.k.a. RFC 4013 If the optional parameter allow_unassigned is set to True, unassigned codepoints will be allowed. This is recommended for query terms and other non-storing situations only. The return value is a Unicode string appropriately prepared. Disallowed input leads to a ValueError. ''' if type(s) != type(u''): raise TypeError("input must be a Unicode string") # phase 1: mapping s = u''.join([ stringprep.in_table_c12(ch) and u' ' or ch for ch in unichars(s) if not stringprep.in_table_b1(ch) ]) # phase 2: normalization s = unicodedata.normalize('NFKC', s) # phase 3: prohibition for ch in unichars(s): if stringprep.in_table_c12(ch): raise ValueError("prohibited non-ASCII space character") if stringprep.in_table_c21(ch): raise ValueError("prohibited ASCII control character") if stringprep.in_table_c22(ch): raise ValueError("prohibited non-ASCII control character") if stringprep.in_table_c3(ch): raise ValueError("prohibited private use character") if stringprep.in_table_c4(ch): raise ValueError("prohibited non-character code point") if stringprep.in_table_c5(ch): raise ValueError("prohibited surrogate code point") if stringprep.in_table_c6(ch): raise ValueError("prohibited character inappropriate for plain text") if stringprep.in_table_c7(ch): raise ValueError("prohibited character inappropriate for canonical representation") if stringprep.in_table_c8(ch): raise ValueError("prohibited character changing display properties, or a deprecated character") if stringprep.in_table_c9(ch): raise ValueError("prohibited tagging character") # phase 4: bidi check bidi_map = ''.join([ stringprep.in_table_d1(ch) and 'r' or stringprep.in_table_d2(ch) and 'l' or 'x' for ch in unichars(s) ]) if 'r' in bidi_map: if 'l' in bidi_map: raise ValueError("prohibited mixture of strong left-to-right and right-to-left text") if bidi_map[0] != 'r' or bidi_map[-1] != 'r': raise ValueError("string containing right-to-left text must start and end with right-to-left text") # phase 5: unassigned check if not allow_unassigned: for ch in unichars(s): if stringprep.in_table_a1(ch): raise ValueError("prohibited unassigned code point") return s