예제 #1
0
    def testParseCredential_MissingRequiredKey(self):
        with self.assertRaisesRegex(ValueError, 'path is required'):
            util.ParseCredential(None, 'rsa-x509-pem', messages=self.messages)

        with self.assertRaisesRegex(ValueError,
                                    re.escape('Invalid key type [None]')):
            util.ParseCredential(self.rsa_key_path,
                                 None,
                                 messages=self.messages)
예제 #2
0
 def testParseCredential_EcdsaKeyUnreadableKeyFile(self):
     with self.assertRaisesRegex(
             util.InvalidKeyFileError,
             re.escape(('Could not read key file [{}]:').format(
                 self.bad_key_path))):
         util.ParseCredential(self.bad_key_path,
                              'es256-pem',
                              messages=self.messages)
예제 #3
0
 def testParseCredential_EcdsaKey(self):
     self.assertEqual(
         util.ParseCredential(self.ecdsa_key_path,
                              'es256-pem',
                              messages=self.messages),
         self.messages.DeviceCredential(
             publicKey=self.messages.PublicKeyCredential(
                 format=self.format_enum.ES256_PEM,
                 key=_DUMMY_ECDSA_FILE_CONTENTS)))
예제 #4
0
 def testParseCredential_RsaKey(self):
     self.assertEqual(
         util.ParseCredential(self.rsa_key_path,
                              'rsa-x509-pem',
                              messages=self.messages),
         self.messages.DeviceCredential(
             publicKey=self.messages.PublicKeyCredential(
                 format=self.format_enum.RSA_X509_PEM,
                 key=_DUMMY_RSA_FILE_CONTENTS)))
예제 #5
0
 def testParseCredential_EcdsaKeyExpirationTime(self):
     self.assertEqual(
         util.ParseCredential(self.ecdsa_key_path,
                              'es256-pem',
                              expiration_time=datetime.datetime(2017, 1, 1),
                              messages=self.messages),
         self.messages.DeviceCredential(
             expirationTime='2017-01-01T00:00:00.000',
             publicKey=self.messages.PublicKeyCredential(
                 format=self.format_enum.ES256_PEM,
                 key=_DUMMY_ECDSA_FILE_CONTENTS)))
예제 #6
0
  def Run(self, args):
    client = devices.DevicesClient()

    device_ref = args.CONCEPTS.device.Parse()
    new_credential = util.ParseCredential(
        args.path, args.type, args.expiration_time, messages=client.messages)

    credentials = client.Get(device_ref).credentials
    if len(credentials) >= util.MAX_PUBLIC_KEY_NUM:
      raise util.InvalidPublicKeySpecificationError(
          'Cannot create a new public key credential for this device; '
          'maximum {} keys are allowed.'.format(util.MAX_PUBLIC_KEY_NUM))
    credentials.append(new_credential)
    response = client.Patch(device_ref, credentials=credentials)
    log.CreatedResource(device_ref.Name(), 'credentials for device')
    return response
예제 #7
0
    def Run(self, args):
        client = devices.DevicesClient()

        device_ref = util.ParseDevice(args.device,
                                      registry=args.registry,
                                      region=args.region)
        new_credential = util.ParseCredential(args.path,
                                              args.type,
                                              args.expiration_time,
                                              messages=client.messages)

        credentials = client.Get(device_ref).credentials
        if len(credentials) >= util.MAX_PUBLIC_KEY_NUM:
            raise util.InvalidPublicKeySpecificationError(
                'Cannot create a new public key credential for this device; '
                'maximum {} keys are allowed.'.format(util.MAX_PUBLIC_KEY_NUM))
        credentials.append(new_credential)
        return client.Patch(device_ref, credentials=credentials)
예제 #8
0
 def testParseCredential_BadKeyType(self):
     with self.assertRaisesRegex(
             ValueError, re.escape('Invalid key type [invalid-type]')):
         util.ParseCredential(self.rsa_key_path,
                              'invalid-type',
                              messages=self.messages)