[[!comment format=mdwn
 username="joey"
 subject="""comment 12"""
 date="2020-07-20T18:06:54Z"
 content="""
Moved isCryptographicallySecure into the Backend data structure. And
it looks at whether verifyKeyContent is Nothing to decide if a given key
is verifiable.

If an external backend is not installed at all (or fails to start up
correctly or speaks an unknown protocol version), what can be done is make a
Backend data structure where genKey is Nothing, verifyKeyContent is
Nothing, isCryptographicallySecure is False, and isStableKey is False.
When annex.verify=true, git-annex will refuse to download such keys,
but that can be changed if necessary. (annex.securehashesonly too)

The isStableKey False will prevent chunking the key when storing on special
remotes, but it can still be stored on them in unchunked form, the
same as is done for URL keys. So, this seems like a reasonable enough
fallback mode, although something will need to be done to warn the user
about it. (Alternatively, could require that external backends generate
stable keys, but that seems like it might get in the way of some
things people might want to do with them.)

If an external backend is broken and replies to VERIFYKEYCONTENT
with ERROR, or crashes, downloaded content would get thrown away when it
fails to verify, as I discussed above.
"""]]
