usim_go

package module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 19, 2022 License: Apache-2.0 Imports: 11 Imported by: 0

README

USIM-go

Go libraray for USIM

To run this mode make sure you have install gcc, libmbedtls-dev and pcscd on your computer.

sudo apt install gcc libmbedtls-dev pcscd

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	SCARD_USIM    = 1
	SCARD_GSM_SIM = 2
	/* GSM SIM commands */
	SIM_CMD_SELECT       = []byte{0xa0, 0xa4, 0x00, 0x00, 0x02}
	SIM_CMD_RUN_GSM_ALG  = []byte{0xa0, 0x88, 0x00, 0x00, 0x10}
	SIM_CMD_GET_RESPONSE = []byte{0xa0, 0xc0, 0x00, 0x00}
	SIM_CMD_READ_BIN     = []byte{0xa0, 0xb0, 0x00, 0x00}
	SIM_CMD_READ_RECORD  = []byte{0xa0, 0xb2, 0x00, 0x00}
	SIM_CMD_VERIFY_CHV1  = []byte{0xa0, 0x20, 0x00, 0x01, 0x08}

	/* USIM commands */
	USIM_CLA              = 0x00
	USIM_CMD_RUN_UMTS_ALG = []byte{0x00, 0x88, 0x00, 0x81, 0x22}
	USIM_CMD_GET_RESPONSE = []byte{0x00, 0xc0, 0x00, 0x00}

	SIM_RECORD_MODE_ABSOLUTE = 0x04

	USIM_FSP_TEMPL_TAG = 0x62

	USIM_TLV_FILE_DESC           = 0x82
	USIM_TLV_FILE_ID             = 0x83
	USIM_TLV_DF_NAME             = 0x84
	USIM_TLV_PROPR_INFO          = 0xA5
	USIM_TLV_LIFE_CYCLE_STATUS   = 0x8A
	USIM_TLV_FILE_SIZE           = 0x80
	USIM_TLV_TOTAL_FILE_SIZE     = 0x81
	USIM_TLV_PIN_STATUS_TEMPLATE = 0xC6
	USIM_TLV_SHORT_FILE_ID       = 0x88
	USIM_TLV_SECURITY_ATTR_8B    = 0x8B
	USIM_TLV_SECURITY_ATTR_8C    = 0x8C
	USIM_TLV_SECURITY_ATTR_AB    = 0xAB

	USIM_PS_DO_TAG = []byte{0x90}

	/* GSM files
	 * File type in first octet:
	 * 3F = Master File
	 * 7F = Dedicated File
	 * 2F = Elementary File under the Master File
	 * 6F = Elementary File under a Dedicated File
	 */
	SCARD_FILE_MF                 = 0x3F00
	SCARD_FILE_TELECOMM_DF        = 0x7f10
	SCARD_FILE_GSM_DF             = 0x7F20
	SCARD_FILE_UMTS_DF            = 0x7F50
	SCARD_FILE_GSM_EF_IMSI        = 0x6F07
	SCARD_FILE_USIM_SERVICE_TABLE = 0x6F38
	SCARD_FILE_USIM_EF_MSISDN     = 0x6F40
	SCARD_FILE_GSM_EF_MSISDN      = 0x6F40
	SCARD_FILE_GSM_EF_AD          = 0x6FAD
	SCARD_FILE_EF_DIR             = 0x2F00
	SCARD_FILE_EF_ICCID           = 0x2FE2
	SCARD_FILE_EF_CK              = 0x6FE1
	SCARD_FILE_EF_IK              = 0x6FE2

	SCARD_CHV1_OFFSET = []byte{13}
	SCARD_CHV1_FLAG   = []byte{0x80}

	//
	AKA_RAND_LEN = 16
	AKA_AUTN_LEN = 16
	AKA_AUTS_LEN = 14
	RES_MAX_LEN  = 16
	MAC_LEN      = 8
	IK_LEN       = 16
	CK_LEN       = 16
	AK_LEN       = 6
	SQN_LEN      = 6
	KEY_LEN      = 32

	//
	UNSYNC = errors.New("UMTS Synchronization-Failure")
)

Functions

func AKAVerify added in v0.0.5

func AKAVerify(ctx *smartcard.Card, simType int, aid []byte, rand, auth []byte) (res, ik, ck, auts []byte, err error)

func ExtractRandAutn added in v0.0.5

func ExtractRandAutn(nonce string) (rand, autn [16]byte)

extract_rand_autn unmarshal nonce and extract rand, autn

func GSMAlg added in v0.0.5

func GSMAlg(ctx *smartcard.Card, simType int, rand []byte) (sres, kc []byte, err error)

Types

type Algo

type Algo uint8
const (
	Milenage Algo = iota
	Xor
)

func (Algo) String

func (a Algo) String() string

type USIM

type USIM struct {
	// contains filtered or unexported fields
}

func InitPcscUSIM added in v0.0.5

func InitPcscUSIM(seq int) (u USIM, err error)

func InitSoftUSIM added in v0.0.5

func InitSoftUSIM(algo Algo, imei string, imsi string, k string, op string, opc string, soft bool) (u USIM, err error)

func (*USIM) Close added in v0.0.5

func (u *USIM) Close()

func (*USIM) ForceIMSI added in v0.0.5

func (u *USIM) ForceIMSI(imsi string) (err error)

func (*USIM) GenAuthResMilenage added in v0.0.2

func (u *USIM) GenAuthResMilenage(rand, autn [16]byte) (rest, ik, ck, auts []byte, err error)

func (*USIM) GenGSMAlg added in v0.0.5

func (u *USIM) GenGSMAlg(rand []byte) (xres, kc []byte, err error)

func (USIM) IMSI added in v0.0.5

func (u USIM) IMSI() string

func (USIM) MSISDN added in v0.0.5

func (u USIM) MSISDN() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL