API Endpoint for Downloading Raw Skyfile Data
Overview
An API endpoint which allows a client to download the raw data of a skyfile directly. It may actually be sufficient to use the existing endpoint and add a flag like raw=true
. What this will do is give the raw data for the skylink (which means a []byte which includes all the layout information and metadata) instead of parsing the layout + metadata and then returning a file.
Raw is useful for clients and third party apps because of encryption. Right now, the only way to download an encrypted file from a portal is to give the encryption key to the portal. If you can download the raw skylink data though, you can decrypt it yourself without needing to send the key to the portal, protecting your privacy.
This does mean that the client will need encryption code, fanout processing code, and erasure coding code. But having those requirements is better than being unable to support encryption via a portal.
Design or Proposal
Whoever ends up implementing this can probably design out the full spec, right now I think I'm leaning towards adding a flag to our existing download endpoints rather than adding a new endpoint.