MCPcopy Create free account
hub / github.com/secdev/scapy / Checksum

Class Checksum

scapy/layers/kerberos.py:515–587  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

513
514
515class Checksum(ASN1_Packet):
516 ASN1_codec = ASN1_Codecs.BER
517 ASN1_root = ASN1F_SEQUENCE(
518 ASN1F_enum_INTEGER(
519 "cksumtype",
520 0,
521 _KRB_S_TYPES,
522 explicit_tag=0xA0,
523 ),
524 _Checksum_Field("checksum", "", explicit_tag=0xA1),
525 )
526
527 def get_usage(self):
528 """
529 Get current key usage number
530 """
531 # RFC 4120 sect 7.5.1
532 if self.underlayer:
533 if isinstance(self.underlayer, KRB_Authenticator):
534 # TGS-REQ PA-TGS-REQ padata AP-REQ Authenticator cksum
535 # (n°10 should never happen as we use RFC4121)
536 return 6
537 elif isinstance(self.underlayer, PA_FOR_USER):
538 # [MS-SFU] sect 2.2.1
539 return 17
540 elif isinstance(self.underlayer, PA_S4U_X509_USER):
541 # [MS-SFU] sect 2.2.2
542 return 26
543 elif isinstance(self.underlayer, AD_KDCIssued):
544 # AD-KDC-ISSUED checksum
545 return 19
546 elif isinstance(self.underlayer, KrbFastArmoredReq):
547 # KEY_USAGE_FAST_REQ_CHKSUM
548 return 50
549 elif isinstance(self.underlayer, KrbFastFinished):
550 # KEY_USAGE_FAST_FINISHED
551 return 53
552 raise ValueError(
553 "Could not guess key usage number. Please specify key_usage_number"
554 )
555
556 def verify(self, key, text, key_usage_number=None):
557 """
558 Verify a signature of text using a key.
559
560 :param key: the key to use to check the checksum
561 :param text: the bytes to verify
562 :param key_usage_number: (optional) specify the key usage number.
563 Guessed otherwise
564 """
565 if key_usage_number is None:
566 key_usage_number = self.get_usage()
567 key.verify_checksum(key_usage_number, text, self.checksum.val)
568
569 def make(self, key, text, key_usage_number=None, cksumtype=None):
570 """
571 Make a signature.
572

Callers 9

AD_KDCIssuedClass · 0.85
KrbFastArmoredReqClass · 0.85
KrbFastFinishedClass · 0.85
PA_FOR_USERClass · 0.85
PA_S4U_X509_USERClass · 0.85
KRB_FINISHEDClass · 0.85
_fast_wrapMethod · 0.85
tgs_reqMethod · 0.85
GSS_Init_sec_contextMethod · 0.85

Calls 3

ASN1F_SEQUENCEClass · 0.90
ASN1F_enum_INTEGERClass · 0.90
_Checksum_FieldClass · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…