示例#1
0
    def get_workorders(self,
                       arrangement_id: bytes = None,
                       bob_verifying_key: bytes = None,
                       session=None) -> List[Workorder]:
        """
        Returns a list of Workorders by HRAC.
        """
        session = session or self._session_on_init_thread
        query = session.query(Workorder)

        if not arrangement_id and not bob_verifying_key:
            workorders = query.all()  # Return all records

        else:

            # Return arrangement records
            if arrangement_id:
                workorders = query.filter_by(arrangement_id=arrangement_id)

            # Return records for Bob
            else:
                fingerprint = fingerprint_from_key(bob_verifying_key)
                key = session.query(Key).filter_by(
                    fingerprint=fingerprint).first()
                workorders = query.filter_by(bob_verifying_key_id=key.id)

            if not workorders:
                raise NotFound

        return list(workorders)
示例#2
0
    def add_key(self, key, is_signing=True, session=None) -> Key:
        """
        :param key: Keypair object to store in the keystore.

        :return: The newly added key object.
        """
        session = session or self._session_on_init_thread
        fingerprint = fingerprint_from_key(key)
        key_data = bytes(key)
        new_key = Key(fingerprint, key_data, is_signing)

        session.add(new_key)
        session.commit()

        return new_key
示例#3
0
    def save_workorder(self, bob_verifying_key, bob_signature, arrangement_id, session=None) -> Workorder:
        """
        Adds a Workorder to the keystore.
        """
        session = session or self._session_on_init_thread

        # Get or Create Bob Verifying Key
        fingerprint = fingerprint_from_key(bob_verifying_key)
        key = session.query(Key).filter_by(fingerprint=fingerprint).first()
        if not key:
            key = self.add_key(key=bob_verifying_key)

        new_workorder = Workorder(bob_verifying_key_id=key.id,
                                  bob_signature=bob_signature,
                                  arrangement_id=arrangement_id)

        session.add(new_workorder)
        session.commit()
        return new_workorder
示例#4
0
 def from_umbral_key(cls, umbral_key, is_signing):
     fingerprint = fingerprint_from_key(umbral_key)
     key_data = bytes(umbral_key)
     return cls(fingerprint, key_data, is_signing)