Beispiel #1
0
 def test_codec_identity(self):
   # Not zero-destructive.
   self.assertEqual(codec.base64_decode(codec.base64_encode(ZERO_BYTES)), ZERO_BYTES)
   self.assertEqual(codec.base64_decode(codec.base64_encode(RANDOM_BYTES_1024)),
                    RANDOM_BYTES_1024)
   self.assertEqual(codec.base64_decode(codec.base64_encode(RANDOM_BYTES_2048)),
                    RANDOM_BYTES_2048)
   self.assertEqual(codec.base64_decode(codec.base64_encode(RANDOM_BYTES_4093)),
                    RANDOM_BYTES_4093)
Beispiel #2
0
 def test_codec_identity(self):
   # Not zero-destructive.
   self.assertEqual(base64_decode(base64_encode(zero_bytes)), zero_bytes)
   self.assertEqual(base64_decode(base64_encode(random_bytes_1024)),
                    random_bytes_1024)
   self.assertEqual(base64_decode(base64_encode(random_bytes_2048)),
                    random_bytes_2048)
   self.assertEqual(base64_decode(base64_encode(random_bytes_len_4093)),
                    random_bytes_len_4093)
Beispiel #3
0
  def test_correctness(self):
    self.assertEqual(codec.base64_urlsafe_encode(URL_SAFETY_TEST_BYTES),
                     URL_SAFETY_TEST_SAFE_ENCODED)
    self.assertEqual(codec.base64_encode(URL_SAFETY_TEST_BYTES),
                     URL_SAFETY_TEST_STANDARD_ENCODED)
    self.assertEqual(codec.base64_urlsafe_decode(URL_SAFETY_TEST_SAFE_ENCODED),
                     URL_SAFETY_TEST_BYTES)
    self.assertEqual(codec.base64_decode(URL_SAFETY_TEST_STANDARD_ENCODED),
                     URL_SAFETY_TEST_BYTES)

    # Tests whether this decoder can decode standard encoded base64
    # representation too.
    self.assertEqual(
      codec.base64_urlsafe_decode(URL_SAFETY_TEST_STANDARD_ENCODED),
      URL_SAFETY_TEST_BYTES
    )
Beispiel #4
0
  def test_correctness(self):
    self.assertEqual(base64_urlsafe_encode(url_safety_test_bytes),
                     url_safety_test_safe_encoded)
    self.assertEqual(base64_encode(url_safety_test_bytes),
                     url_safety_test_standard_encoded)
    self.assertEqual(base64_urlsafe_decode(url_safety_test_safe_encoded),
                     url_safety_test_bytes)
    self.assertEqual(base64_decode(url_safety_test_standard_encoded),
                     url_safety_test_bytes)

    # Tests whether this decoder can decode standard encoded base64
    # representation too.
    self.assertEqual(
      base64_urlsafe_decode(url_safety_test_standard_encoded),
      url_safety_test_bytes
    )
Beispiel #5
0
def pem_to_der(pem_cert_string, pem_header, pem_footer):
    """
  Extracts the DER as a byte sequence out of an ASCII PEM formatted
  certificate or key.

  Taken from the Python SSL module.

  :param pem_cert_string:
      The PEM certificate or key string.
  :param pem_header:
      The PEM header to find.
  :param pem_footer:
      The PEM footer to find.
  """
    # Be a little lenient.
    pem_cert_string = pem_cert_string.strip()
    if not pem_cert_string.startswith(pem_header):
        raise ValueError("Invalid PEM encoding; must start with %s" %
                         pem_header)
    if not pem_cert_string.endswith(pem_footer):
        raise ValueError("Invalid PEM encoding; must end with %s" % pem_footer)
    encoded = pem_cert_string[len(pem_header):-len(pem_footer)]
    return codec.base64_decode(encoded)
Beispiel #6
0
def verify_rsa_sha1_signature(signature,
                              base_string,
                              client_certificate,
                              *args, **kwargs):
    """
    Verifies a RSA-SHA1 OAuth signature.

    :see: RSA-SHA1 (http://tools.ietf.org/html/rfc5849#section-3.4.3)

    :param base_string:
        Base string.
    :param signature:
        RSA-SHA1 OAuth signature.
    :param client_certificate:
        PEM-encoded X.509 certificate or RSA public key.
    :returns:
        ``True`` if verified to be correct; ``False`` otherwise.
    """
    from mom.security.rsa import parse_public_key

    key = parse_public_key(client_certificate)
    return key.pkcs1_v1_5_verify(sha1_digest(base_string),
                                 base64_decode(signature))
Beispiel #7
0
def pem_to_der(pem_cert_string, pem_header, pem_footer):
    """
    Extracts the DER as a byte sequence out of an ASCII PEM formatted
    certificate or key.

    Taken from the Python SSL module.

    :param pem_cert_string:
        The PEM certificate or key string.
    :param pem_header:
        The PEM header to find.
    :param pem_footer:
        The PEM footer to find.
    """
    # Be a little lenient.
    pem_cert_string = pem_cert_string.strip()
    if not pem_cert_string.startswith(pem_header):
        raise ValueError("Invalid PEM encoding; must start with %s"
                         % pem_header)
    if not pem_cert_string.endswith(pem_footer):
        raise ValueError("Invalid PEM encoding; must end with %s"
                         % pem_footer)
    encoded = pem_cert_string[len(pem_header):-len(pem_footer)]
    return base64_decode(encoded)
Beispiel #8
0
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBK\
E0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==""")

NO_META_DATA_URI = b("""\
data:;base64,\
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBK\
E0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==""")

RFC_BASE64_GIF = b("""R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw\
AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz\
ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp\
a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl\
ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis\
F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH\
hhx4dbgYKAAA7""")
RFC_GIF = codec.base64_decode(RFC_BASE64_GIF)

RFC_GIF_DATA_URI = b("""\
data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw\
AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz\
ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp\
a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl\
ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis\
F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH\
hhx4dbgYKAAA7""")

RFC_NOTE_DATA_URI = b("data:,A%20brief%20note")
RFC_NOTE_DECODED = (b("A brief note"), (b("text"), b("plain"), {
    b("charset"): b("US-ASCII")
}))
Beispiel #9
0
data:;base64,\
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBK\
E0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="""
)


RFC_BASE64_GIF = b(
    """R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw\
AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz\
ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp\
a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl\
ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis\
F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH\
hhx4dbgYKAAA7"""
)
RFC_GIF = codec.base64_decode(RFC_BASE64_GIF)


RFC_GIF_DATA_URI = b(
    """\
data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw\
AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz\
ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp\
a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl\
ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis\
F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH\
hhx4dbgYKAAA7"""
)


RFC_NOTE_DATA_URI = b("data:,A%20brief%20note")
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBK\
E0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==''')

no_meta_data_url = b('''\
data:;base64,\
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBK\
E0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==''')

rfc_base64_gif = b('''R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw\
AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz\
ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp\
a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl\
ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis\
F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH\
hhx4dbgYKAAA7''')
rfc_gif = base64_decode(rfc_base64_gif)

rfc_gif_data_url = b('''\
data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw\
AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz\
ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp\
a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl\
ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis\
F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH\
hhx4dbgYKAAA7''')

rfc_note_data_url = b('data:,A%20brief%20note')
rfc_note_decoded = (b('A brief note'), (b('text'), b('plain'),
                                          {b('charset'): b('US-ASCII')}))

class Test_encoding(unittest2.TestCase):
 def test_range(self):
     for i in range(100):
         n_bits = 144
         value = bytes_to_integer(base64_decode(generate_client_secret(144)))
         self.assertTrue(value >= 0 and value < (1 << n_bits)) # 2**n_bits