public virtual LoadStatus Decrypt(Stream data, out Stream decryptedData, out X509Certificate2 certificate) { var publicKeyHash = ParsePublicKeyHash(data); var found = store.TryGetCertificateWith(publicKeyHash, out certificate); decryptedData = default(Stream); if (!found) { return(FailForMissingCertificate()); } decryptedData = Decrypt(data, PUBLIC_KEY_HASH_SIZE, certificate); return(LoadStatus.Success); }