// -*-c++-*-
/* This file was automatically generated by rpcc. */

#ifndef __RPCC_CRYPT_PROT_H_INCLUDED__
#define __RPCC_CRYPT_PROT_H_INCLUDED__ 1

#include "xdrmisc.h"
#include "bigint.h"

typedef rpc_opaque<20> _srp_hash;
void *_srp_hash_alloc ();
bool_t xdr__srp_hash (XDR *, void *);
RPC_TYPEDEF_DECL (_srp_hash)


struct srp_msg1 {
  rpc_str<RPC_INFINITY> salt;
  bigint N;
  bigint g;
};
void *srp_msg1_alloc ();
bool_t xdr_srp_msg1 (XDR *, void *);
RPC_STRUCT_DECL (srp_msg1)

template<class T> bool
rpc_traverse (T &t, srp_msg1 &obj)
{
  return rpc_traverse (t, obj.salt)
    && rpc_traverse (t, obj.N)
    && rpc_traverse (t, obj.g);
}



struct srp_msg2 {
  bigint A;
};
void *srp_msg2_alloc ();
bool_t xdr_srp_msg2 (XDR *, void *);
RPC_STRUCT_DECL (srp_msg2)

template<class T> inline bool
rpc_traverse (T &t, srp_msg2 &obj)
{
  return rpc_traverse (t, obj.A);
}



struct srp_msg3 {
  bigint B;
  bigint u;
};
void *srp_msg3_alloc ();
bool_t xdr_srp_msg3 (XDR *, void *);
RPC_STRUCT_DECL (srp_msg3)

template<class T> bool
rpc_traverse (T &t, srp_msg3 &obj)
{
  return rpc_traverse (t, obj.B)
    && rpc_traverse (t, obj.u);
}



struct srp_msg4_src {
  _srp_hash sessid;
  bigint N;
  bigint g;
  rpc_str<RPC_INFINITY> user;
  rpc_str<RPC_INFINITY> salt;
  bigint A;
  bigint B;
  bigint S;
};
void *srp_msg4_src_alloc ();
bool_t xdr_srp_msg4_src (XDR *, void *);
RPC_STRUCT_DECL (srp_msg4_src)

template<class T> bool
rpc_traverse (T &t, srp_msg4_src &obj)
{
  return rpc_traverse (t, obj.sessid)
    && rpc_traverse (t, obj.N)
    && rpc_traverse (t, obj.g)
    && rpc_traverse (t, obj.user)
    && rpc_traverse (t, obj.salt)
    && rpc_traverse (t, obj.A)
    && rpc_traverse (t, obj.B)
    && rpc_traverse (t, obj.S);
}



struct srp_msg5_src {
  _srp_hash sessid;
  bigint A;
  _srp_hash M;
  bigint S;
};
void *srp_msg5_src_alloc ();
bool_t xdr_srp_msg5_src (XDR *, void *);
RPC_STRUCT_DECL (srp_msg5_src)

template<class T> bool
rpc_traverse (T &t, srp_msg5_src &obj)
{
  return rpc_traverse (t, obj.sessid)
    && rpc_traverse (t, obj.A)
    && rpc_traverse (t, obj.M)
    && rpc_traverse (t, obj.S);
}

#endif /* !__RPCC_CRYPT_PROT_H_INCLUDED__ */
