Home | History | Annotate | Download | only in src
      1 /*############################################################################
      2   # Copyright 2017 Intel Corporation
      3   #
      4   # Licensed under the Apache License, Version 2.0 (the "License");
      5   # you may not use this file except in compliance with the License.
      6   # You may obtain a copy of the License at
      7   #
      8   #     http://www.apache.org/licenses/LICENSE-2.0
      9   #
     10   # Unless required by applicable law or agreed to in writing, software
     11   # distributed under the License is distributed on an "AS IS" BASIS,
     12   # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13   # See the License for the specific language governing permissions and
     14   # limitations under the License.
     15   ############################################################################*/
     16 /// Tiny portable implementations of standard library functions
     17 /*! \file */
     18 
     19 #include "epid/member/tiny/src/serialize.h"
     20 #include <stddef.h>
     21 
     22 #include "epid/common/types.h"
     23 #include "epid/member/tiny/math/serialize.h"
     24 #include "epid/member/tiny/src/native_types.h"
     25 #include "epid/member/tiny/src/signbasic.h"
     26 
     27 void* BasicSignatureSerialize(BasicSignature* dest,
     28                               NativeBasicSignature const* src) {
     29 #if defined(UNOPTIMIZED_SERIALIZATION)
     30   EFqSerialize(&dest->B, &src->B);
     31   EFqSerialize(&dest->K, &src->K);
     32   EFqSerialize(&dest->T, &src->T);
     33   FpSerialize(&dest->c, &src->c);
     34   FpSerialize(&dest->sx, &src->sx);
     35   FpSerialize(&dest->sf, &src->sf);
     36   FpSerialize(&dest->sa, &src->sa);
     37   FpSerialize(&dest->sb, &src->sb);
     38   return dest + 1;
     39 #else   // defined(UNOPTIMIZED_SERIALIZATION)
     40   SwapNativeAndPortableLayout(dest, sizeof(*dest), src, sizeof(*src));
     41   return dest + 1;
     42 #endif  // defined(UNOPTIMIZED_SERIALIZATION)
     43 }
     44 
     45 void const* BasicSignatureDeserialize(NativeBasicSignature* dest,
     46                                       BasicSignature const* src) {
     47 #if defined(UNOPTIMIZED_SERIALIZATION)
     48   EFqDeserialize(&dest->B, &src->B);
     49   EFqDeserialize(&dest->K, &src->K);
     50   EFqDeserialize(&dest->T, &src->T);
     51   FpDeserialize(&dest->c, &src->c);
     52   FpDeserialize(&dest->sx, &src->sx);
     53   FpDeserialize(&dest->sf, &src->sf);
     54   FpDeserialize(&dest->sa, &src->sa);
     55   FpDeserialize(&dest->sb, &src->sb);
     56   return src + 1;
     57 #else   // defined(UNOPTIMIZED_SERIALIZATION)
     58   SwapNativeAndPortableLayout(dest, sizeof(*dest), src, sizeof(*src));
     59   return src + 1;
     60 #endif  // defined(UNOPTIMIZED_SERIALIZATION)
     61 }
     62 
     63 void* GroupPubKeySerialize(GroupPubKey* dest, NativeGroupPubKey const* src) {
     64 #if defined(UNOPTIMIZED_SERIALIZATION)
     65   EFqSerialize(&dest->h1, &src->h1);
     66   EFqSerialize(&dest->h2, &src->h2);
     67   EFq2Serialize(&dest->w, &src->w);
     68   dest->gid = src->gid;
     69   return dest + 1;
     70 #else   // defined(UNOPTIMIZED_SERIALIZATION)
     71   dest->gid = src->gid;
     72   SwapNativeAndPortableLayout(
     73       (uint8_t*)dest + sizeof(dest->gid), sizeof(*dest) - sizeof(dest->gid),
     74       (uint8_t*)src + sizeof(src->gid), sizeof(*src) - sizeof(src->gid));
     75   return dest + 1;
     76 #endif  // defined(UNOPTIMIZED_SERIALIZATION)
     77 }
     78 
     79 void const* GroupPubKeyDeserialize(NativeGroupPubKey* dest,
     80                                    GroupPubKey const* src) {
     81 #if defined(UNOPTIMIZED_SERIALIZATION)
     82   EFqDeserialize(&dest->h1, &src->h1);
     83   EFqDeserialize(&dest->h2, &src->h2);
     84   EFq2Deserialize(&dest->w, &src->w);
     85   dest->gid = src->gid;
     86   return src + 1;
     87 #else   // defined(UNOPTIMIZED_SERIALIZATION)
     88   dest->gid = src->gid;
     89   SwapNativeAndPortableLayout(
     90       (uint8_t*)dest + sizeof(dest->gid), sizeof(*dest) - sizeof(dest->gid),
     91       (uint8_t*)src + sizeof(src->gid), sizeof(*src) - sizeof(src->gid));
     92   return src + 1;
     93 #endif  // defined(UNOPTIMIZED_SERIALIZATION)
     94 }
     95 
     96 void const* PrivKeyDeserialize(NativePrivKey* dest, PrivKey const* src) {
     97 #if defined(UNOPTIMIZED_SERIALIZATION)
     98   EFqDeserialize(&dest->cred.A, &src->A);
     99   FpDeserialize(&dest->cred.x, &src->x);
    100   FpDeserialize(&dest->f, &src->f);
    101   dest->cred.gid = src->gid;
    102   return src + 1;
    103 #else   // defined(UNOPTIMIZED_SERIALIZATION)
    104   dest->cred.gid = src->gid;
    105   SwapNativeAndPortableLayout((uint8_t*)dest + sizeof(dest->cred.gid),
    106                               sizeof(*dest) - sizeof(dest->cred.gid),
    107                               (uint8_t*)src + sizeof(src->gid),
    108                               sizeof(*src) - sizeof(src->gid));
    109   return src + 1;
    110 #endif  // defined(UNOPTIMIZED_SERIALIZATION)
    111 }
    112 
    113 void const* PreCompDeserialize(NativeMemberPrecomp* dest,
    114                                MemberPrecomp const* src) {
    115 #if defined(UNOPTIMIZED_SERIALIZATION)
    116   Fq12Deserialize(&dest->ea2, (Fq12ElemStr*)&src->ea2);
    117   Fq12Deserialize(&dest->e12, (Fq12ElemStr*)&src->e12);
    118   Fq12Deserialize(&dest->e22, (Fq12ElemStr*)&src->e22);
    119   Fq12Deserialize(&dest->e2w, (Fq12ElemStr*)&src->e2w);
    120   return src + 1;
    121 #else   // defined(UNOPTIMIZED_SERIALIZATION)
    122   SwapNativeAndPortableLayout(dest, sizeof(*dest), src, sizeof(*src));
    123   return src + 1;
    124 #endif  // defined(UNOPTIMIZED_SERIALIZATION)
    125 }
    126 
    127 void const* MembershipCredentialDeserialize(NativeMembershipCredential* dest,
    128                                             MembershipCredential const* src) {
    129 #if defined(UNOPTIMIZED_SERIALIZATION)
    130   EFqDeserialize(&dest->A, &src->A);
    131   FpDeserialize(&dest->x, &src->x);
    132   dest->gid = src->gid;
    133   return src + 1;
    134 #else   // defined(UNOPTIMIZED_SERIALIZATION)
    135   dest->gid = src->gid;
    136   SwapNativeAndPortableLayout(
    137       (uint8_t*)dest + sizeof(dest->gid), sizeof(*dest) - sizeof(dest->gid),
    138       (uint8_t*)src + sizeof(src->gid), sizeof(*src) - sizeof(src->gid));
    139   return src + 1;
    140 #endif  // defined(UNOPTIMIZED_SERIALIZATION)
    141 }
    142