def test_crypto_get_compact_deprecated_rsa(self, do_request): utils.silently_remove('./rsa-test.public_key.pem') utils.silently_remove('./rsa-test.private_key.pem') with open("./rsa-test.private_key.pem", 'wb') as f: f.write(oss2.to_bytes(private_key_compact)) with open("./rsa-test.public_key.pem", 'wb') as f: f.write(oss2.to_bytes(public_key_compact)) content = b'a' * 1024 * 1024 encrypted_rsa_path = "tests/deprecated_encrypted_1MB_a_rsa" encrypted_meta_rsa_path = "tests/deprecated_encrypted_1MB_a_meta_rsa.json" with open(encrypted_rsa_path, 'rb') as f: encrypted_content = f.read() with open(encrypted_meta_rsa_path, 'r') as f: meta = json.loads(f.read()) key = random_string(10) provider = oss2.LocalRsaProvider(dir='./', key='rsa-test') request_text, response_text = make_get_encrypted_object_compact_deprecated( key, encrypted_content, meta) req_info = unittests.common.mock_response(do_request, response_text) result = unittests.common.bucket(provider).get_object(key) self.assertRequest(req_info, request_text) self.assertEqual(result.read(), content) utils.silently_remove('./rsa-test.public_key.pem') utils.silently_remove('./rsa-test.private_key.pem')
def setUp(self): oss2.defaults.connect_timeout = self.default_connect_timeout oss2.defaults.multipart_threshold = self.default_multipart_num_threads oss2.defaults.multipart_num_threads = random.randint(1, 5) oss2.defaults.multiget_threshold = self.default_multiget_threshold oss2.defaults.multiget_part_size = self.default_multiget_part_size oss2.defaults.multiget_num_threads = random.randint(1, 5) global OSS_AUTH_VERSION OSS_AUTH_VERSION = os.getenv('OSS_TEST_AUTH_VERSION') self.bucket = oss2.Bucket(oss2.make_auth(OSS_ID, OSS_SECRET, OSS_AUTH_VERSION), OSS_ENDPOINT, OSS_BUCKET) try: self.bucket.create_bucket() except: pass self.rsa_crypto_bucket = oss2.CryptoBucket(oss2.make_auth(OSS_ID, OSS_SECRET, OSS_AUTH_VERSION), OSS_ENDPOINT, OSS_BUCKET, crypto_provider=oss2.LocalRsaProvider()) self.kms_crypto_bucket = oss2.CryptoBucket(oss2.make_auth(OSS_ID, OSS_SECRET, OSS_AUTH_VERSION), OSS_ENDPOINT, OSS_BUCKET, crypto_provider=oss2.AliKMSProvider(OSS_ID, OSS_SECRET, OSS_REGION, OSS_CMK)) self.key_list = [] self.temp_files = []
def test_crypto_put_from_file(self, do_request): size = 512 * 2 - 1 content = unittests.common.random_bytes(size) filename = self.make_tempfile(content) request_text, response_text = make_put_encrypted_object(content) req_info = unittests.common.mock_response(do_request, response_text) with patch.object(oss2.utils, 'random_aes256_key', return_value=unittests.common.fixed_aes_key, autospect=True): with patch.object(oss2.utils, 'random_counter', return_value=unittests.common.fixed_aes_start, autospect=True): result = unittests.common.bucket( oss2.LocalRsaProvider( key='oss-test')).put_object_from_file( 'sjbhlsgsbecvlpbf.txt', filename) self.assertRequest(req_info, request_text) self.assertEqual(result.request_id, '566B6BE93A7B8CFD53D4BAA3') self.assertEqual(result.etag, 'D80CF0E5BE2436514894D64B2BCFB2AE')
def test_crypto_put_bytes(self, do_request): content = unittests.common.random_bytes(1024 * 1024 - 1) request_text, response_text = make_put_encrypted_object(content) req_info = unittests.common.mock_response(do_request, response_text) with patch.object(oss2.utils, 'random_aes256_key', return_value=unittests.common.fixed_aes_key, autospect=True): with patch.object(oss2.utils, 'random_counter', return_value=unittests.common.fixed_aes_start, autospect=True): unittests.common.bucket( oss2.LocalRsaProvider(key='oss-test')).put_object( 'sjbhlsgsbecvlpbf.txt', content, headers={ 'content-md5': oss2.utils.md5_string(content), 'content-length': str(len(content)) }) self.assertRequest(req_info, request_text)
def test_crypto_get_with_incomplete_crypto_meta(self, do_request): content = unittests.common.random_bytes(1023) request_text, response_text = make_get_encrypted_object( content, missing_alg=True) req_info = unittests.common.mock_response(do_request, response_text) self.assertRaises( oss2.exceptions.InconsistentError, unittests.common.bucket( oss2.LocalRsaProvider(key='oss-test')).get_object, 'sjbhlsgsbecvlpbf')
def test_crypto_get_with_progress(self, do_request): content = unittests.common.random_bytes(1024 * 1024 + 1) request_text, response_text = make_get_encrypted_object(content) req_info = unittests.common.mock_response(do_request, response_text) self.previous = -1 result = unittests.common.bucket( oss2.LocalRsaProvider(key='oss-test')).get_object( 'sjbhlsgsbecvlpbf', progress_callback=self.progress_callback) self.assertRequest(req_info, request_text) content_read = unittests.common.read_file(result) self.assertEqual(self.previous, len(content)) self.assertEqual(len(content_read), len(content)) self.assertEqual(content_read, content)
def test_crypto_operation_exception(self, do_request): content = unittests.common.random_bytes(1024 * 1024 + 1) request_text, response_text = make_get_encrypted_object( content, oss2.api._make_range_string((1024, 2047))) req_info = unittests.common.mock_response(do_request, response_text) bucket = unittests.common.bucket(oss2.LocalRsaProvider(key='oss-test')) key = 'sjbhlsgsbecvlpbf' self.assertRaises(oss2.exceptions.ClientError, bucket.get_object, key, {'range': 'bytes=1024-2047'}) self.assertRaises( oss2.exceptions.ClientError, oss2.CryptoBucket, oss2.Auth('fake-access-key-id', 'fake-access-key-secret'), 'http://oss-cn-hangzhou.aliyuncs.com', '123', None)
def test_crypto_get_to_file(self, do_request): content = unittests.common.random_bytes(1023) request_text, response_text = make_get_encrypted_object(content) req_info = unittests.common.mock_response(do_request, response_text) filename = self.tempname() result = unittests.common.bucket(oss2.LocalRsaProvider( key='oss-test')).get_object_to_file('sjbhlsgsbecvlpbf', filename) self.assertRequest(req_info, request_text) self.assertEqual(result.request_id, '566B6BE93A7B8CFD53D4BAA3') self.assertEqual(result.content_length, len(content)) self.assertEqual(os.path.getsize(filename), len(content)) with open(filename, 'rb') as f: self.assertEqual(content, oss2.to_bytes(f.read()))
def test_crypto_get_to_file_with_progress(self, do_request): size = 1024 * 1024 + 1 content = unittests.common.random_bytes(size) request_text, response_text = make_get_encrypted_object(content) req_info = unittests.common.mock_response(do_request, response_text) filename = self.tempname() self.previous = -1 unittests.common.bucket( oss2.LocalRsaProvider(key='oss-test')).get_object_to_file( 'sjbhlsgsbecvlpbf', filename, progress_callback=self.progress_callback) self.assertRequest(req_info, request_text) self.assertEqual(self.previous, size) self.assertEqual(os.path.getsize(filename), size) with open(filename, 'rb') as f: self.assertEqual(oss2.to_bytes(content), f.read())
def test_crypto_get(self, do_request): content = unittests.common.random_bytes(1023) request_text, response_text = make_get_encrypted_object(content) req_info = unittests.common.mock_response(do_request, response_text) result = unittests.common.bucket(oss2.LocalRsaProvider( key='oss-test')).get_object('sjbhlsgsbecvlpbf') result1 = unittests.common.bucket().get_object('sjbhlsgsbecvlpbf', byte_range=(None, None)) self.assertRequest(req_info, request_text) self.assertNotEqual(result1.read(), content) self.assertEqual(result.read(), content) self.assertEqual( int(result.headers['x-oss-meta-unencrypted-content-length']), len(content)) self.assertEqual(result.status, 200) self.assertEqual(result.request_id, '566B6BE93A7B8CFD53D4BAA3') self.assertEqual(result.object_type, 'Normal') self.assertEqual(result.content_type, 'text/plain') self.assertEqual(result.etag, 'D80CF0E5BE2436514894D64B2BCFB2AE') self.assertEqual(result.last_modified, 1449880553) self.assertEqual( result.headers['x-oss-meta-oss-crypto-key'], 'BPNkLSi+htvzrU/d52S9SVHmDFYwKZoepPGRBZ8flm/Wh8oXaRSyVx9vsrQR2aNfy2m5DuNpkIcRP8GUmO7g/RBpl7kU/xJiYjZSjY0dMDjjSB2K0iuX0iHjACFqYsGq7jqYQnSzL03kYPP1Nu8XJFCAax/KLRr8lf0eAPoDLgqo/rIqyI8RkSPgJO29X4Dm2XBayShmvjR5O/TF95N8ql3g+iit4JQovPmlFvu6RFtp8FJpDbS41+VVP7s6c4yfyZoio9VfYJKSKhEZBvlCo44PbY9MFUUH4rYvrwJXCgWmVbfo35gzSF1fRXsaYhB8OIBTJlHxeFUUr/lZv0kuNw==' ) self.assertEqual( result.headers['x-oss-meta-oss-crypto-start'], 'HkRvX7uxN+ASy8eu2mNVayUqElwhde+cp9zw1F4ywBku7sgsphksItRHFySxAwesbAsy7U0cMcQvBt0hHIXIVDJl47GXubbGk/oHuwv58Rry/POdjJ+hbFOoTS0is5GNfyNw7ZjmgxuQ54Yv9gzYCxMpyZ1g35miKi8slikyzkFnkrOQSCHm3T7BF+hDylYQVvrPximdvW6UmHYZWXMzwx4gD43YvXlpfiafqXnkY7lBliIYmP0Ty6a7kwpeKHdkvwIa6wER+Cv0+qiq+KPJFf+iJ+9hx+Z6HWCyV6S+blQqK4ZNbKHApAkQJHAeQb5Cf4SZAQehU8ewwxwzxYn5bw==' ) self.assertEqual(result.headers['x-oss-meta-oss-cek-alg'], 'AES/GCM/NoPadding')
def test_crypto_put_bytes_with_progress(self, do_request): self.previous = -1 content = unittests.common.random_bytes(1024 * 1024 - 1) request_text, response_text = make_put_encrypted_object(content) req_info = unittests.common.mock_response(do_request, response_text) with patch.object(oss2.utils, 'random_aes256_key', return_value=unittests.common.fixed_aes_key, autospect=True): with patch.object(oss2.utils, 'random_counter', return_value=unittests.common.fixed_aes_start, autospect=True): unittests.common.bucket( oss2.LocalRsaProvider(key='oss-test')).put_object( 'sjbhlsgsbecvlpbf.txt', content, progress_callback=self.progress_callback) self.assertRequest(req_info, request_text) self.assertEqual(self.previous, len(content))