DESFireKey IDESFireSAM.FindKeyById(short id) { foreach (PACSAMKey key in myKeys) { if (key.Id == id) { DESFireKey result = new DESFireKey(); result.Id = key.Id; if (key.KeyType == PACSAMKeyType.AES) { result.KeyType = DESFireKeyType.AES; } else if (key.KeyType == PACSAMKeyType.DES) { result.KeyType = DESFireKeyType.TDEA2KEY; } else { throw new InvalidOperationException(); } result.Version = key.Version; result.Name = key.Name; result.SamIndex = key.Index; return(result); } } return(null); }
byte[] IDESFireSAM.ChangeKey(byte keyNo, short newId, short?oldId) { if (oldId == null) { DESFireKey newKey = (this as IDESFireSAM).FindKeyById(newId); return(EV1ChangeKey(keyNo, newKey.SamIndex, null)); } else { DESFireKey newKey = (this as IDESFireSAM).FindKeyById(newId); DESFireKey oldKey = (this as IDESFireSAM).FindKeyById(oldId.Value); return(EV1ChangeKey(keyNo, newKey.SamIndex, oldKey.SamIndex)); } }
byte[] IDESFireSAM.Authenticate0(short keyId, byte[] ekRndB) { DESFireKey key = (this as IDESFireSAM).FindKeyById(keyId); return(EV1Authenticate0(key.SamIndex, ekRndB)); }