Rhino 7 Login Error - Data Protection Failed

Hi all,

I have been trying to access Rhino 7 as I recently purchased an upgrade license. However, I have not managed to login in as I keep getting this error “Data protection Failed” when trying to login to my account via browser!

Any solutions?

@brian - any idea?


@Brian @pascal I am quite desperate to run Rhino but still to no avail!

I have send an email to tech@mcneel as well.

any help will be greatly appreciate it!

What is your Mac OS?

Does this have something to do with Apple menu > System Preferences… > Security & Privacy > Click the Allow

Files and Folders Allow Rhino.

It is MacOS Monterey v 12.0.1

in regards to Security and privacy; no, since the software is installed on the machine. the problem I think is do with rhino 7 not obtaining CloudZoo licence. see image bellow

Can you please install the latest release candidate of Rhino 7.15 and see if the error message is different? We’re trying to track this problem down now.

You’ll probably still get an error, but it should help us better understand the problem.

Many thanks for your reply @Brian - I went ahead and downloaded 7.15 but still the same error. however, this time I am getting a more in depth error diagnoses.

System.Security.Cryptography.CryptographicException: Data protection failed. ---> System.Security.Cryptography.CryptographicException: Could not create user key store '/Users/serwan/.config/.mono/keypairs'. ---> System.UnauthorizedAccessException: Access to the path '/Users/serwan/.config/.mono/keypairs' is denied. ---> System.IO.IOException: Permission denied
--- End of inner exception stack trace ---
at System.IO.FileSystem.CreateDirectory (System.String fullPath) [0x00191] in <8eb149dd05a5465eb95700a3d8da7ec1>:0 
at System.IO.Directory.CreateDirectory (System.String path) [0x0002c] in <8eb149dd05a5465eb95700a3d8da7ec1>:0 
at Mono.Security.Cryptography.KeyPairPersistence.get_UserPath () [0x0005e] in <8eb149dd05a5465eb95700a3d8da7ec1>:0 
--- End of inner exception stack trace ---
at Mono.Security.Cryptography.KeyPairPersistence.get_UserPath () [0x00086] in <8eb149dd05a5465eb95700a3d8da7ec1>:0 
at Mono.Security.Cryptography.KeyPairPersistence.get_Filename () [0x00063] in <8eb149dd05a5465eb95700a3d8da7ec1>:0 
at Mono.Security.Cryptography.KeyPairPersistence.Load () [0x00000] in <8eb149dd05a5465eb95700a3d8da7ec1>:0 
at System.Security.Cryptography.RSACryptoServiceProvider.Common (System.Security.Cryptography.CspParameters p) [0x0000c] in <8eb149dd05a5465eb95700a3d8da7ec1>:0 
at System.Security.Cryptography.RSACryptoServiceProvider..ctor (System.Int32 dwKeySize, System.Security.Cryptography.CspParameters parameters) [0x0001d] in <8eb149dd05a5465eb95700a3d8da7ec1>:0 
at Mono.Security.Cryptography.ManagedProtection.GetKey (System.Security.Cryptography.DataProtectionScope scope) [0x00034] in <99e44d7cfe3a41d09d908fd1d3ddf6eb>:0 
at Mono.Security.Cryptography.ManagedProtection.Protect (System.Byte[] userData, System.Byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope) [0x00133] in <99e44d7cfe3a41d09d908fd1d3ddf6eb>:0 
at System.Security.Cryptography.ProtectedData.Protect (System.Byte[] userData, System.Byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope) [0x0001d] in <99e44d7cfe3a41d09d908fd1d3ddf6eb>:0 
--- End of inner exception stack trace ---
at System.Security.Cryptography.ProtectedData.Protect (System.Byte[] userData, System.Byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope) [0x00039] in <99e44d7cfe3a41d09d908fd1d3ddf6eb>:0 
at McNeel.RhinoAccounts.InternalRhinoAccountsManager._WriteCachedEntriesToDiskAsync (System.String storagePath, System.Collections.Generic.List`1[T] cachedEntries) [0x00021] in <f88001f7608b432d906f4e4b38c0c68c>:0 
at McNeel.RhinoAccounts.InternalRhinoAccountsManager+<>c__DisplayClass38_1.<GetAuthTokensAsync>b__6 (System.Net.HttpListenerContext context) [0x0087a] in <f88001f7608b432d906f4e4b38c0c68c>:0 
at McNeel.Network.AsyncHttpServer.ListenAsync (System.Collections.Generic.ICollection`1[T] prefixes, System.Func`2[T,TResult] responseFn, System.Threading.CancellationToken cancelToken) [0x00207] in <f88001f7608b432d906f4e4b38c0c68c>:0 
at McNeel.RhinoAccounts.InternalRhinoAccountsManager.GetAuthTokensAsync (System.String clientId, System.String clientSecret, System.Collections.Generic.IEnumerable`1[T] scope, System.String prompt, System.Nullable`1[T] maxAge, System.Boolean showUI, System.IProgress`1[T] progress, System.Func`4[T1,T2,T3,TResult] redirectUriFn, System.Boolean keepListening, System.String userEmail, Rhino.Runtime.RhinoAccounts.SecretKey secretKey, System.Threading.CancellationToken cancellationToken) [0x00577] in <f88001f7608b432d906f4e4b38c0c68c>:0 
at McNeel.CloudZoo.CloudZooManager+<>c__DisplayClass37_2.<GetLeaseAsync>b__2 (Rhino.Runtime.RhinoAccounts.SecretKey secretKey) [0x00146] in <87294c636d0c4853acaa6be2a7ac8ed3>:0 
at McNeel.RhinoAccounts.InternalRhinoAccountsManager.ExecuteProtectedCodeAsync (System.Func`2[T,TResult] protectedCode) [0x000ca] in <f88001f7608b432d906f4e4b38c0c68c>:0 
at McNeel.CloudZoo.CloudZooManager.GetLeaseAsync (System.Threading.CancellationToken cancelToken, System.IProgress`1[T] progress, System.Func`2[T,TResult] loginTask, System.Func`3[T1,T2,TResult] groupIdSelectorTask, System.Guid productId, System.Boolean forceUpdate) [0x00560] in <87294c636d0c4853acaa6be2a7ac8ed3>:0 
at ZooClient.ClientManager._GetCloudZooLeaseAutomaticallyAsync (System.Threading.CancellationToken cancelToken, System.IProgress`1[T] progress, System.Func`2[T,TResult] loginPrompt, System.Guid productId, System.String productTitle, System.String email) [0x0010f] in <64dd202e55984ad79a5a494f421ba9fb>:0 
at ZooClient.ClientManager+<>c__DisplayClass88_0.<GetCloudZooLease>b__0 (System.Threading.CancellationToken cancelToken, System.IProgress`1[T] progress, McNeel.RhinoAccounts.ProgressModal progressModal) [0x00202] in <64dd202e55984ad79a5a494f421ba9fb>:0 

Looks like this is being tracked in:

The only workaround we know of at the moment is to switch away from using your account and assign your license locally.

To do that, click Cancel, and then follow the steps through adding your license key again, but follow the path through “Lock to this computer”

‘/Users/serwan/.config/.mono/keypairs’ is denied.

does this directory exist and does Rhino have permissions to read/write to it?

@serwan, if you can please open Terminal.app and run the following commands (hit enter after each one).

ls -la ~/.config
ls -la ~/.config/.mono
ls -la ~/.config/.mono/keypairs

Copy and paste the output here, or take a screenshot.

Thanks @Brian - if I do that, would I be able to revert it back to cloud zoo later? as I have rhino on bootcamp as well?

Hi @will - this is the output:

serwan@Serwans-MacBook-Pro ~ % ls -la ~/.config

total 0

ls: /Users/serwan/.config: Permission denied

serwan@Serwans-MacBook-Pro ~ % ls -la ~/.config/.mono

ls: /Users/serwan/.config/.mono: Permission denied

serwan@Serwans-MacBook-Pro ~ % ls -la ~/.config/.mono/keypairs

ls: /Users/serwan/.config/.mono/keypairs: Permission denied

serwan@Serwans-MacBook-Pro ~ %


Hi Travis, that path does not exist

Thank you, @serwan! This is the closest we’ve been to understanding the cause of this bug.

I have one more command that I’d like to see the output for, if you don’t mind.

sudo ls -la ~/.config

The sudo will elevate the command, so that ls can read the directory as the “root” user. This should tell us what the permissions are on the directory. Once I know this, I can help you to fix the problem that’s preventing Cloud Zoo from working on your machine.

Yes, absolutely.

Many thanks Will,

this is the output for for the command:

Last login: Sun Jan 16 10:05:10 on ttys000
serwan@Serwans-MacBook-Pro ~ % sudo ls -la ~/.config
total 0
drwx------   3 root    staff    96 29 Dec  2020 .
drwxr-xr-x+ 39 serwan  staff  1248 16 Jan 12:12 ..
drwx------   3 root    staff    96 13 Mar  2021 configstore
serwan@Serwans-MacBook-Pro ~ % 

Could you please advice what the process looks like in regards to reverting the licence from the machine to cloud zoo?


Alright, let’s fix it… The ~/.config directory should be owned by your user, not root.

sudo chown -v serwan:staff ~/.config

Now try starting Rhino again and logging in.

you are a star Will, this actually solved the problem.

Many thank everyone for your great help! really appreciate it

1 Like

Awesome! Thanks for letting us know. I appreciate you helping us to understand this problem better.