code: func parseAuthData(authType string, authData json.RawMessage) dockerAuths {
  	intermediateAuthData := make(dockerAuths)
  	switch authType {
  	case "docker":
  		err := json.Unmarshal(authData, &intermediateAuthData)
  		if err != nil {
  			seelog.Warn("Could not parse 'docker' type auth config")
  			return dockerAuths{}
  		}
  	case "dockercfg":
  		var base64dAuthInfo dockercfgData
  		err := json.Unmarshal(authData, &base64dAuthInfo)
  		if err != nil {
  			seelog.Warn("Could not parse 'dockercfg' type auth config")
  			return dockerAuths{}
  		}
  
  		for registry, auth := range base64dAuthInfo {
  			data, err := base64.StdEncoding.DecodeString(auth.Auth)
  			if err != nil {
  				seelog.Warnf("Malformed auth data for registry %v", registry)
  				continue
  			}
  
  			usernamePass := strings.SplitN(string(data), ":", 2)
  			if len(usernamePass) != 2 {
  				seelog.Warnf("Malformed auth data for registry %v; must contain ':'", registry)
  				continue
  			}
  			intermediateAuthData[registry] = types.AuthConfig{
  				Username: usernamePass[0],
  				Password: usernamePass[1],
  			}
  		}
  	case "":
  		// not set; no warn
  		return dockerAuths{}
  	default:
  		seelog.Warnf("Unknown auth configuration: %v", authType)
  		return dockerAuths{}
  	}
  
  	// Normalize intermediate registry keys into not having a schema
  	output := make(dockerAuths)
  	for key, val := range intermediateAuthData {
  		output[stripRegistrySchema(key)] = val
  	}
  	return output
  }
docs: // Normalize all auth types into a uniform 'dockerAuths' type.
  // On error, any appropriate information will be logged and an empty dockerAuths will be returned