Beispiel #1
0
        private bool DecryptRecordKey(IRecordMetadata rmd, out byte[] recordKey)
        {
            try
            {
                var rKey = rmd.RecordKey.Base64UrlDecode();
                switch (rmd.RecordKeyType)
                {
                case (int)KeyType.NoKey:
                case (int)KeyType.DataKey:
                case (int)KeyType.PrivateKey:
                    recordKey = CryptoUtils.DecryptAesV1(rKey, ClientKey);
                    return(true);

                case (int)KeyType.SharedFolderKey:
                    if (keeperSharedFolders.TryGetValue(rmd.SharedFolderUid, out var sf))
                    {
                        recordKey = CryptoUtils.DecryptAesV1(rKey, sf.SharedFolderKey);
                        return(true);
                    }
                    else
                    {
                        Debug.WriteLine("Shared Folder not found.");
                        break;
                    }

                default:
                    Debug.WriteLine("Unsupported record key type");
                    break;
                }
            }
            catch (Exception e)
            {
                Trace.TraceError(e.Message);
            }

            recordKey = null;
            return(false);
        }
 public static Record FromMetadata(IRecordMetadata metadata, Item parent)
 {
     return(metadata == null ? null : new RecordImpl(metadata, parent));
 }
 private RecordImpl(IRecordMetadata metadata, Item parent)
 {
     _metadata = metadata;
     Parent    = parent;
 }
Beispiel #4
0
 public bool Equals(IRecordMetadata metadata) => this.Guid == metadata.Guid;