| @@ -52,6 +52,7 @@ from youtube_dl.utils import ( | |||||||
|     parse_filesize, |     parse_filesize, | ||||||
|     parse_count, |     parse_count, | ||||||
|     parse_iso8601, |     parse_iso8601, | ||||||
|  |     pkcs1pad, | ||||||
|     read_batch_urls, |     read_batch_urls, | ||||||
|     sanitize_filename, |     sanitize_filename, | ||||||
|     sanitize_path, |     sanitize_path, | ||||||
| @@ -1104,6 +1105,14 @@ The first line | |||||||
|             ohdave_rsa_encrypt(b'aa111222', e, N), |             ohdave_rsa_encrypt(b'aa111222', e, N), | ||||||
|             '726664bd9a23fd0c70f9f1b84aab5e3905ce1e45a584e9cbcf9bcc7510338fc1986d6c599ff990d923aa43c51c0d9013cd572e13bc58f4ae48f2ed8c0b0ba881') |             '726664bd9a23fd0c70f9f1b84aab5e3905ce1e45a584e9cbcf9bcc7510338fc1986d6c599ff990d923aa43c51c0d9013cd572e13bc58f4ae48f2ed8c0b0ba881') | ||||||
|  |  | ||||||
|  |     def test_pkcs1pad(self): | ||||||
|  |         data = [1, 2, 3] | ||||||
|  |         padded_data = pkcs1pad(data, 32) | ||||||
|  |         self.assertEqual(padded_data[:2], [0, 2]) | ||||||
|  |         self.assertEqual(padded_data[28:], [0, 1, 2, 3]) | ||||||
|  |  | ||||||
|  |         self.assertRaises(ValueError, pkcs1pad, data, 8) | ||||||
|  |  | ||||||
|     def test_encode_base_n(self): |     def test_encode_base_n(self): | ||||||
|         self.assertEqual(encode_base_n(0, 30), '0') |         self.assertEqual(encode_base_n(0, 30), '0') | ||||||
|         self.assertEqual(encode_base_n(80, 30), '2k') |         self.assertEqual(encode_base_n(80, 30), '2k') | ||||||
|   | |||||||
| @@ -3336,6 +3336,21 @@ def ohdave_rsa_encrypt(data, exponent, modulus): | |||||||
|     return '%x' % encrypted |     return '%x' % encrypted | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def pkcs1pad(data, length): | ||||||
|  |     """ | ||||||
|  |     Padding input data with PKCS#1 scheme | ||||||
|  |  | ||||||
|  |     @param {int[]} data        input data | ||||||
|  |     @param {int}   length      target length | ||||||
|  |     @returns {int[]}           padded data | ||||||
|  |     """ | ||||||
|  |     if len(data) > length - 11: | ||||||
|  |         raise ValueError('Input data too long for PKCS#1 padding') | ||||||
|  |  | ||||||
|  |     pseudo_random = [random.randint(0, 254) for _ in range(length - len(data) - 3)] | ||||||
|  |     return [0, 2] + pseudo_random + [0] + data | ||||||
|  |  | ||||||
|  |  | ||||||
| def encode_base_n(num, n, table=None): | def encode_base_n(num, n, table=None): | ||||||
|     FULL_TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' |     FULL_TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' | ||||||
|     if not table: |     if not table: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Yen Chi Hsuan
					Yen Chi Hsuan