Import the result of krb_[tgs/as]_req or a Ticket into the CCache. :param obj: a KRB_Ticket object or a AS_REP/TGS_REP object :param sessionkey: the session key that comes along the ticket
(self, res, key=None, hash=None, _inplace=None)
| 663 | del self.ccache.credentials[i] |
| 664 | |
| 665 | def import_krb(self, res, key=None, hash=None, _inplace=None): |
| 666 | """ |
| 667 | Import the result of krb_[tgs/as]_req or a Ticket into the CCache. |
| 668 | |
| 669 | :param obj: a KRB_Ticket object or a AS_REP/TGS_REP object |
| 670 | :param sessionkey: the session key that comes along the ticket |
| 671 | """ |
| 672 | # Instantiate CCCredential |
| 673 | if _inplace is not None: |
| 674 | cred = self.ccache.credentials[_inplace] |
| 675 | else: |
| 676 | cred = CCCredential() |
| 677 | |
| 678 | # Update the cred |
| 679 | if isinstance(res, KRB_Ticket): |
| 680 | if key is None: |
| 681 | key = self._prompt_hash( |
| 682 | res.getSPN(), |
| 683 | etype=res.encPart.etype.val, |
| 684 | hash=hash, |
| 685 | ) |
| 686 | decTkt = res.encPart.decrypt(key) |
| 687 | cred.set_from_krb( |
| 688 | res, |
| 689 | decTkt, |
| 690 | decTkt.key.toKey(), |
| 691 | decTkt, |
| 692 | ) |
| 693 | else: |
| 694 | if isinstance(res, KerberosClient.RES_AS_MODE): |
| 695 | rep = res.asrep |
| 696 | elif isinstance(res, KerberosClient.RES_TGS_MODE): |
| 697 | rep = res.tgsrep |
| 698 | |
| 699 | # There could be 171 = KERB_DMSA_KEY_PACKAGE to import |
| 700 | for padata in res.kdcrep.encryptedPaData: |
| 701 | if padata.padataType == 171: |
| 702 | # We have keys to import. |
| 703 | key_package = padata.padataValue |
| 704 | for key in key_package.currentKeys: |
| 705 | self.add_cred( |
| 706 | principal=rep.getUPN(), |
| 707 | key=key.toKey(), |
| 708 | ) |
| 709 | log_interactive.info( |
| 710 | "%s DMSA keys found and imported !" |
| 711 | % len(key_package.currentKeys) |
| 712 | ) |
| 713 | else: |
| 714 | raise ValueError("Unknown type of obj !") |
| 715 | cred.set_from_krb( |
| 716 | rep.ticket, |
| 717 | rep, |
| 718 | res.sessionkey, |
| 719 | res.kdcrep, |
| 720 | ) |
| 721 | |
| 722 | # Append to ccache |
no test coverage detected