code: func (mgr *mspManagerImpl) DeserializeIdentity(serializedID []byte) (Identity, error) {
  	// We first deserialize to a SerializedIdentity to get the MSP ID
  	sId := &msp.SerializedIdentity{}
  	err := proto.Unmarshal(serializedID, sId)
  	if err != nil {
  		return nil, errors.Wrap(err, "could not deserialize a SerializedIdentity")
  	}
  
  	// we can now attempt to obtain the MSP
  	msp := mgr.mspsMap[sId.Mspid]
  	if msp == nil {
  		return nil, errors.Errorf("MSP %s is unknown", sId.Mspid)
  	}
  
  	switch t := msp.(type) {
  	case *bccspmsp:
  		return t.deserializeIdentityInternal(sId.IdBytes)
  	case *idemixmsp:
  		return t.deserializeIdentityInternal(sId.IdBytes)
  	default:
  		return t.DeserializeIdentity(serializedID)
  	}
  }
docs: // DeserializeIdentity returns an identity given its serialized version supplied as argument