------------- Fix SHA hashing to remove race condition. This change fixes the implementation by passing in the digest buffer. ------------- The input to ProvisioningEngine::NewProvisioningSession should be pkcs8 private key instead of pkcs1 private key ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=151273394 Change-Id: Ibcdff7757b2ac2878ee8b1b88365083964bfa10a
173 lines
7.5 KiB
Python
173 lines
7.5 KiB
Python
################################################################################
|
|
# Copyright 2016 Google Inc.
|
|
#
|
|
# This software is licensed under the terms defined in the Widevine Master
|
|
# License Agreement. For a copy of this agreement, please contact
|
|
# widevine-licensing@google.com.
|
|
################################################################################
|
|
|
|
import unittest
|
|
|
|
import pywrapcertificate_type
|
|
import pywrapprovisioning_engine
|
|
import pywrapprovisioning_status
|
|
import test_data_provider
|
|
import test_data_utility
|
|
|
|
|
|
class InitEngineTest(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
self._engine = pywrapprovisioning_engine.ProvisioningEngine()
|
|
self._data_provider = test_data_provider.TestDataProvider(
|
|
pywrapcertificate_type.kCertTesting)
|
|
|
|
def testInitEngineSucceed(self):
|
|
test_data_utility.InitProvisionEngineWithTestData(
|
|
self._engine, verify_success=True)
|
|
|
|
def testSetCertificateStatusListWithoutInit(self):
|
|
status = self._engine.SetCertificateStatusList('CERTIFICATE_STATUS_LIST',
|
|
3600)
|
|
self.assertEqual(
|
|
pywrapprovisioning_status.PROVISIONING_ENGINE_UNINITIALIZED, status)
|
|
|
|
def testGenerateDrmIntermediateCertificateWithoutInit(self):
|
|
status, _ = self._engine.GenerateDrmIntermediateCertificate(
|
|
100, 'INTERMEDIATE_PUBLIC_KEY')
|
|
self.assertEqual(
|
|
pywrapprovisioning_status.PROVISIONING_ENGINE_UNINITIALIZED, status)
|
|
|
|
def testAddDrmIntermediateCertificateWithoutInit(self):
|
|
status = self._engine.AddDrmIntermediateCertificate(
|
|
'INTERMEDIATE_CERTIFICATE', 'INTERMEDIATE_PRIVATE_KEY',
|
|
'INTERMEDIATE_PRIVATE_KEY_PASSPHRASE')
|
|
self.assertEqual(
|
|
pywrapprovisioning_status.PROVISIONING_ENGINE_UNINITIALIZED, status)
|
|
|
|
def testGenerateDeviceDrmCertificateWithoutInit(self):
|
|
status, _ = self._engine.GenerateDeviceDrmCertificate(
|
|
100, 'DEVICE_PUBLIC_KEY', 'DEVICE_SERIAL_NUMBER')
|
|
self.assertEqual(
|
|
pywrapprovisioning_status.PROVISIONING_ENGINE_UNINITIALIZED, status)
|
|
|
|
def testNewProvisioningSessionWithoutInit(self):
|
|
status, session = self._engine.NewProvisioningSession('DEVICE_PUBLIC_KEY',
|
|
'DEVICE_PRIVATE_KEY')
|
|
self.assertEqual(
|
|
pywrapprovisioning_status.PROVISIONING_ENGINE_UNINITIALIZED, status)
|
|
self.assertIsNone(session)
|
|
|
|
def testInitEngineInvalidServiceDrmCert(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting, 'INVALID_CERT',
|
|
self._data_provider.service_private_key,
|
|
self._data_provider.service_private_key_passphrase,
|
|
self._data_provider.provisioner_drm_cert,
|
|
self._data_provider.provisioner_private_key,
|
|
self._data_provider.provisioner_private_key_passphrase,
|
|
self._data_provider.provisioner_spoid_secret)
|
|
self.assertEqual(pywrapprovisioning_status.INVALID_SERVICE_DRM_CERTIFICATE,
|
|
status)
|
|
|
|
def testInitEngineInvalidServicePrivateKey(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting,
|
|
self._data_provider.service_drm_cert, 'INVALID_KEY',
|
|
self._data_provider.service_private_key_passphrase,
|
|
self._data_provider.provisioner_drm_cert,
|
|
self._data_provider.provisioner_private_key,
|
|
self._data_provider.provisioner_private_key_passphrase,
|
|
self._data_provider.provisioner_spoid_secret)
|
|
self.assertEqual(pywrapprovisioning_status.INVALID_SERVICE_PRIVATE_KEY,
|
|
status)
|
|
|
|
def testInitEngineWrongServicePrivateKey(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting,
|
|
self._data_provider.service_drm_cert,
|
|
self._data_provider.provisioner_private_key,
|
|
self._data_provider.service_private_key_passphrase,
|
|
self._data_provider.provisioner_drm_cert,
|
|
self._data_provider.provisioner_private_key,
|
|
self._data_provider.provisioner_private_key_passphrase,
|
|
self._data_provider.provisioner_spoid_secret)
|
|
self.assertEqual(pywrapprovisioning_status.INVALID_SERVICE_PRIVATE_KEY,
|
|
status)
|
|
|
|
def testInitEngineInvalidServicePrivateKeyPassphrase(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting,
|
|
self._data_provider.service_drm_cert,
|
|
self._data_provider.service_private_key, 'INVALID_PASSPHRASE',
|
|
self._data_provider.provisioner_drm_cert,
|
|
self._data_provider.provisioner_private_key,
|
|
self._data_provider.provisioner_private_key_passphrase,
|
|
self._data_provider.provisioner_spoid_secret)
|
|
self.assertEqual(pywrapprovisioning_status.INVALID_SERVICE_PRIVATE_KEY,
|
|
status)
|
|
|
|
def testInitEngineInvalidDrmCert(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting,
|
|
self._data_provider.service_drm_cert,
|
|
self._data_provider.service_private_key,
|
|
self._data_provider.service_private_key_passphrase, 'INVALID_CERT',
|
|
self._data_provider.provisioner_private_key,
|
|
self._data_provider.provisioner_private_key_passphrase,
|
|
self._data_provider.provisioner_spoid_secret)
|
|
self.assertEqual(
|
|
pywrapprovisioning_status.INVALID_PROVISIONER_DRM_CERTIFICATE, status)
|
|
|
|
def testInitEngineInvalidDrmPrivateKey(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting,
|
|
self._data_provider.service_drm_cert,
|
|
self._data_provider.service_private_key,
|
|
self._data_provider.service_private_key_passphrase,
|
|
self._data_provider.provisioner_drm_cert, 'INVALID_KEY',
|
|
self._data_provider.provisioner_private_key_passphrase,
|
|
self._data_provider.provisioner_spoid_secret)
|
|
self.assertEqual(pywrapprovisioning_status.INVALID_PROVISIONER_PRIVATE_KEY,
|
|
status)
|
|
|
|
def testInitEngineWrongDrmPrivateKey(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting,
|
|
self._data_provider.service_drm_cert,
|
|
self._data_provider.service_private_key,
|
|
self._data_provider.service_private_key_passphrase,
|
|
self._data_provider.provisioner_drm_cert,
|
|
self._data_provider.service_private_key,
|
|
self._data_provider.provisioner_private_key_passphrase,
|
|
self._data_provider.provisioner_spoid_secret)
|
|
self.assertEqual(pywrapprovisioning_status.INVALID_PROVISIONER_PRIVATE_KEY,
|
|
status)
|
|
|
|
def testInitEngineInvalidDrmPrivateKeyPassphrase(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting,
|
|
self._data_provider.service_drm_cert,
|
|
self._data_provider.service_private_key,
|
|
self._data_provider.service_private_key_passphrase,
|
|
self._data_provider.provisioner_drm_cert,
|
|
self._data_provider.provisioner_private_key_passphrase,
|
|
'INVALID_PASSPHRASE',
|
|
self._data_provider.provisioner_spoid_secret)
|
|
self.assertEqual(pywrapprovisioning_status.INVALID_PROVISIONER_PRIVATE_KEY,
|
|
status)
|
|
|
|
def testInitEngineInvalidSpoidSecret(self):
|
|
status = self._engine.Initialize(
|
|
pywrapcertificate_type.kCertTesting,
|
|
self._data_provider.service_drm_cert,
|
|
self._data_provider.service_private_key,
|
|
self._data_provider.service_private_key_passphrase,
|
|
self._data_provider.provisioner_drm_cert,
|
|
self._data_provider.provisioner_private_key,
|
|
self._data_provider.provisioner_private_key_passphrase, '')
|
|
self.assertEqual(pywrapprovisioning_status.INVALID_SPOID_SAUCE, status)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|