msgtype.go 507 B

1234567891011121314151617181920
  1. package rfc4757
  2. import "encoding/binary"
  3. // UsageToMSMsgType converts Kerberos key usage numbers to Microsoft message type encoded as a little-endian four byte slice.
  4. func UsageToMSMsgType(usage uint32) []byte {
  5. // Translate usage numbers to the Microsoft T numbers
  6. switch usage {
  7. case 3:
  8. usage = 8
  9. case 9:
  10. usage = 8
  11. case 23:
  12. usage = 13
  13. }
  14. // Now convert to bytes
  15. tb := make([]byte, 4) // We force an int32 input so we can't go over 4 bytes
  16. binary.PutUvarint(tb, uint64(usage))
  17. return tb
  18. }