Skip to content

Commit

Permalink
Separate the serialization/deserialization from main code
Browse files Browse the repository at this point in the history
  • Loading branch information
rescrv committed Jun 30, 2016
1 parent 065ecc3 commit e249433
Show file tree
Hide file tree
Showing 15 changed files with 897 additions and 731 deletions.
2 changes: 2 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ libmacaroons_la_SOURCES =
libmacaroons_la_SOURCES += base64.c
libmacaroons_la_SOURCES += macaroons.c
libmacaroons_la_SOURCES += packet.c
libmacaroons_la_SOURCES += slice.c
libmacaroons_la_SOURCES += port.c
libmacaroons_la_SOURCES += v1.c
libmacaroons_la_SOURCES += varint.c
libmacaroons_la_SOURCES += explicit_bzero.c
libmacaroons_la_SOURCES += timingsafe_bcmp.c
Expand Down
8 changes: 6 additions & 2 deletions bindings/python/macaroons.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import binascii

cdef extern from "stdlib.h":

void* malloc(size_t size)
Expand Down Expand Up @@ -139,7 +141,7 @@ cdef class Macaroon:
cdef size_t signature_sz = 0
self.assert_not_null()
macaroon_signature(self._M, &signature, &signature_sz)
return (signature[:signature_sz]).encode('hex')
return binascii.hexlify(signature[:signature_sz])

def copy(self):
self.assert_not_null()
Expand Down Expand Up @@ -275,6 +277,7 @@ cdef class Verifier:

def satisfy_exact(self, pred):
cdef macaroon_returncode err
pred = tobytes(pred)
if macaroon_verifier_satisfy_exact(self._V, pred, len(pred), &err) < 0:
raise_error(err)

Expand Down Expand Up @@ -337,9 +340,10 @@ def create(_location, _key, _key_id):
return M


def deserialize(bytes m):
def deserialize(m):
cdef Macaroon M = Macaroon()
cdef macaroon_returncode err
m = tobytes(m)
M._M = macaroon_deserialize(m, &err)
if M._M == NULL:
raise_error(err)
Expand Down
2 changes: 2 additions & 0 deletions explicit_bzero.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
* Written by Matthew Dempsky.
*/

#pragma GCC diagnostic ignored "-Wunused-parameter"

#include <string.h>

__attribute__((weak)) void
Expand Down
68 changes: 68 additions & 0 deletions macaroons-inner.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/* Copyright (c) 2016, Robert Escriva
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of this project nor the names of its contributors may
* be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef macaroons_inner_h_
#define macaroons_inner_h_

/* macaroons */
#include "slice.h"

#ifdef PARANOID_MACAROONS
#define VALIDATE(M) assert(macaroon_validate(M) == 0);
#else
#define VALIDATE(M) do {} while (0)
#endif

#define MACAROON_API __attribute__ ((visibility ("default")))

struct caveat
{
struct slice cid;
struct slice vid;
struct slice cl;
};

struct macaroon
{
struct slice location;
struct slice identifier;
struct slice signature;
/* zero or more caveats */
size_t num_caveats;
struct caveat caveats[1];
};

struct macaroon*
macaroon_malloc(const size_t num_caveats,
const size_t body_data,
unsigned char** _ptr);

size_t
macaroon_body_size(const struct macaroon* M);

#endif /* macaroons_inner_h_ */
Loading

0 comments on commit e249433

Please sign in to comment.