浏览代码

Change date file upload with header : X-OC-Mtime (ctime assetLocalIdentifier) #256

Marino Faggiana 7 年之前
父节点
当前提交
40f20c854f
共有 2 个文件被更改,包括 10 次插入316 次删除
  1. 10 1
      iOSClient/Networking/CCNetworking.m
  2. 0 315
      iOSClient/Security/CommonCryptorSPI.h

+ 10 - 1
iOSClient/Networking/CCNetworking.m

@@ -1001,7 +1001,8 @@
     NSURLSession *sessionUpload;
     NSURL *url;
     NSMutableURLRequest *request;
-        
+    PHAsset *asset;
+    
     NSString *fileNamePath = [[NSString stringWithFormat:@"%@/%@", serverUrl, fileName] encodeString:NSUTF8StringEncoding];
         
     url = [NSURL URLWithString:fileNamePath];
@@ -1012,6 +1013,14 @@
     [request setHTTPMethod:@"PUT"];
     [request setValue:authValue forHTTPHeaderField:@"Authorization"];
     
+    // Change date file upload with header : X-OC-Mtime (ctime assetLocalIdentifier)
+    PHFetchResult *result = [PHAsset fetchAssetsWithLocalIdentifiers:@[assetLocalIdentifier] options:nil];
+    if (result.count) {
+        asset = result[0];
+        long dateFileCreation = [asset.creationDate timeIntervalSince1970] * 1000;
+        [request setValue:[NSString stringWithFormat:@"%ld", dateFileCreation] forHTTPHeaderField:@"X-OC-Mtime"];
+    }
+    
     // Rename with the SessionID
     NSString *fileNameForUpload = sessionID;
     

+ 0 - 315
iOSClient/Security/CommonCryptorSPI.h

@@ -1,315 +0,0 @@
-/*
- * Copyright (c) 2010 Apple Inc. All Rights Reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
- *
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this
- * file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- *
- * @APPLE_LICENSE_HEADER_END@
- */
-
-#ifndef    _CC_CryptorSPI_H_
-#define _CC_CryptorSPI_H_
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <stdint.h>
-
-#include <string.h>
-#ifdef KERNEL
-#include <machine/limits.h>
-#else
-#include <limits.h>
-#include <stdlib.h>
-#endif /* KERNEL */
-#include <Availability.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    
-    /*
-     This is an SPI header.  It includes some work in progress implementation notes that
-     will be removed when this is promoted to an API set.
-     */
-    
-    /*
-     Private Ciphers
-     */
-    
-    /* Lion SPI name for no padding.  Defining for compatibility.  Is now
-     ccNoPadding in CommonCryptor.h
-     */
-    
-    enum {
-        ccDefaultPadding            = 0,
-    };
-    
-    
-    enum {
-        kCCAlgorithmAES128NoHardware = 20,
-        kCCAlgorithmAES128WithHardware = 21
-    };
-    
-    /*
-     Private Modes
-     */
-    enum {
-        kCCModeGCM        = 11,
-    };
-    
-    /*
-     Private Paddings
-     */
-    enum {
-        ccCBCCTS1            = 10,
-        ccCBCCTS2            = 11,
-        ccCBCCTS3            = 12,
-    };
-    
-    /*
-     Private Cryptor direction (op)
-     */
-    enum {
-        kCCBoth        = 3,
-    };
-    
-    
-    
-    
-    /*
-     Supports a mode call of
-     int mode_setup(int cipher, const unsigned char *IV, const unsigned char *key, int keylen,
-     const unsigned char *tweak, int tweaklen, int num_rounds, int options, mode_context *ctx);
-     */
-    
-    /* User supplied space for the CryptorRef */
-    
-    CCCryptorStatus CCCryptorCreateFromDataWithMode(
-                                                    CCOperation     op,                /* kCCEncrypt, kCCEncrypt, kCCBoth (default for BlockMode) */
-                                                    CCMode            mode,
-                                                    CCAlgorithm        alg,
-                                                    CCPadding        padding,
-                                                    const void         *iv,            /* optional initialization vector */
-                                                    const void         *key,            /* raw key material */
-                                                    size_t             keyLength,
-                                                    const void         *tweak,            /* raw tweak material */
-                                                    size_t             tweakLength,
-                                                    int                numRounds,
-                                                    CCModeOptions     options,
-                                                    const void        *data,            /* caller-supplied memory */
-                                                    size_t            dataLength,        /* length of data in bytes */
-                                                    CCCryptorRef    *cryptorRef,    /* RETURNED */
-                                                    size_t            *dataUsed)        /* optional, RETURNED */
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-    
-    
-    /*
-     Assuming we can use existing CCCryptorCreateFromData for all modes serviced by these:
-     int mode_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, mode_context *ctx);
-     int mode_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, mode_context *ctx);
-     */
-    
-    /*
-     Block mode encrypt and decrypt interfaces for IV tweaked blocks (XTS and CBC)
-     
-     int mode_encrypt_tweaked(const unsigned char *pt, unsigned long len, unsigned char *ct, const unsigned char *tweak, mode_context *ctx);
-     int mode_decrypt_tweaked(const unsigned char *ct, unsigned long len, unsigned char *pt, const unsigned char *tweak, mode_context *ctx);
-     */
-    
-    CCCryptorStatus CCCryptorEncryptDataBlock(
-                                              CCCryptorRef cryptorRef,
-                                              const void *iv,
-                                              const void *dataIn,
-                                              size_t dataInLength,
-                                              void *dataOut)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-    
-    
-    CCCryptorStatus CCCryptorDecryptDataBlock(
-                                              CCCryptorRef cryptorRef,
-                                              const void *iv,
-                                              const void *dataIn,
-                                              size_t dataInLength,
-                                              void *dataOut)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-    
-    /*
-     Assuming we can use the existing CCCryptorRelease() interface for
-     int mode_done(mode_context *ctx);
-     */
-    
-    /*
-     Not surfacing these other than with CCCryptorReset()
-     
-     int mode_setiv(const unsigned char *IV, unsigned long len, mode_context *ctx);
-     int mode_getiv(const unsigned char *IV, unsigned long *len, mode_context *ctx);
-     */
-    
-    /*
-     DES key utilities
-     */
-    
-    CCCryptorStatus CCDesIsWeakKey(
-                                   void *key,
-                                   size_t Length)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-    
-    void CCDesSetOddParity(
-                           void *key,
-                           size_t Length)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-    
-    uint32_t CCDesCBCCksum(void *input, void *output,
-                           size_t length, void *key, size_t keylen,
-                           void *ivec)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-    
-    
-    /*
-     * returns a cipher blocksize length iv in the provided iv buffer.
-     */
-    
-    CCCryptorStatus
-    CCCryptorGetIV(CCCryptorRef cryptorRef, void *iv)
-    __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
-    
-    /*
-     GCM Support Interfaces
-     
-     Use CCCryptorCreateWithMode() with the kCCModeGCM selector to initialize
-     a CryptoRef.  Only kCCAlgorithmAES128 can be used with GCM and these
-     functions.  IV Setting etc will be ignored from CCCryptorCreateWithMode().
-     Use the CCCryptorGCMAddIV() routine below for IV setup.
-     */
-    
-    /*
-     This adds the initial vector octets from iv of length ivLen to the GCM
-     CCCryptorRef. You can call this function as many times as required to
-     process the entire IV.
-     */
-    
-    CCCryptorStatus
-    CCCryptorGCMAddIV(CCCryptorRef cryptorRef,
-                      const void         *iv,
-                      size_t ivLen)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0);
-    
-    /*
-     Additional Authentication Data
-     After the entire IV has been processed, the additional authentication
-     data can be processed. Unlike the IV, a packet/session does not require
-     additional authentication data (AAD) for security. The AAD is meant to
-     be used as side–channel data you want to be authenticated with the packet.
-     Note: once you begin adding AAD to the GCM CCCryptorRef you cannot return
-     to adding IV data until the state has been reset.
-     */
-    
-    CCCryptorStatus
-    CCCryptorGCMAddAAD(CCCryptorRef cryptorRef,
-                       const void         *aData,
-                       size_t aDataLen)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
-    
-    // Maintain the old symbol with incorrect camel-case for now.
-    CCCryptorStatus
-    CCCryptorGCMaddAAD(CCCryptorRef cryptorRef,
-                       const void         *aData,
-                       size_t aDataLen)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
-    
-    // This is for old iOS5 clients
-    CCCryptorStatus
-    CCCryptorGCMAddADD(CCCryptorRef cryptorRef,
-                       const void         *aData,
-                       size_t aDataLen)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0);
-    
-    
-    CCCryptorStatus CCCryptorGCMEncrypt(
-                                        CCCryptorRef cryptorRef,
-                                        const void *dataIn,
-                                        size_t dataInLength,
-                                        void *dataOut)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0);
-    
-    
-    CCCryptorStatus CCCryptorGCMDecrypt(
-                                        CCCryptorRef cryptorRef,
-                                        const void *dataIn,
-                                        size_t dataInLength,
-                                        void *dataOut)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0);
-    
-    /*
-     This terminates the GCM state gcm and stores the tag in tag of length
-     taglen octets.
-     */
-    
-    CCCryptorStatus CCCryptorGCMFinal(
-                                      CCCryptorRef cryptorRef,
-                                      const void *tag,
-                                      size_t *tagLength)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0);
-    
-    /*
-     This will reset the GCM CCCryptorRef to the state that CCCryptorCreateWithMode()
-     left it. The user would then call CCCryptorGCMAddIV(), CCCryptorGCMaddAAD(), etc.
-     */
-    
-    CCCryptorStatus CCCryptorGCMReset(
-                                      CCCryptorRef cryptorRef)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0);
-    
-    /*
-     This will initialize the GCM state with the given key, IV and AAD value
-     then proceed to encrypt or decrypt the message text and store the final
-     message tag. The definition of the variables is the same as it is for all
-     the manual functions. If you are processing many packets under the same
-     key you shouldn’t use this function as it invokes the pre–computation
-     with each call.
-     */
-    
-    CCCryptorStatus CCCryptorGCM(
-                                 CCOperation     op,                /* kCCEncrypt, kCCDecrypt */
-                                 CCAlgorithm        alg,
-                                 const void         *key,            /* raw key material */
-                                 size_t             keyLength,
-                                 const void         *iv,
-                                 size_t             ivLen,
-                                 const void         *aData,
-                                 size_t             aDataLen,
-                                 const void         *dataIn,
-                                 size_t             dataInLength,
-                                 void             *dataOut,
-                                 const void         *tag,
-                                 size_t             *tagLength)
-    __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0);
-    
-    
-    void CC_RC4_set_key(void *ctx, int len, const unsigned char *data)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);
-    
-    void CC_RC4(void *ctx, unsigned long len, const unsigned char *indata,
-                unsigned char *outdata)
-    __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_5_0);
-    
-    
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CC_CryptorSPI_H_ */