github.com/hellobchain/third_party@v0.0.0-20230331131523-deb0478a2e52/hyperledger/fabric/idemix/idemix.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // source: idemix/idemix.proto
     3  
     4  package idemix // import "github.com/hellobchain/third_party/hyperledger/fabric/idemix"
     5  
     6  import proto "github.com/golang/protobuf/proto"
     7  import fmt "fmt"
     8  import math "math"
     9  
    10  // Reference imports to suppress errors if they are not otherwise used.
    11  var _ = proto.Marshal
    12  var _ = fmt.Errorf
    13  var _ = math.Inf
    14  
    15  // This is a compile-time assertion to ensure that this generated file
    16  // is compatible with the proto package it is being compiled against.
    17  // A compilation error at this line likely means your copy of the
    18  // proto package needs to be updated.
    19  const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
    20  
    21  // ECP is an elliptic curve point specified by its coordinates
    22  // ECP corresponds to an element of the first group (G1)
    23  type ECP struct {
    24  	X                    []byte   `protobuf:"bytes,1,opt,name=x,proto3" json:"x,omitempty"`
    25  	Y                    []byte   `protobuf:"bytes,2,opt,name=y,proto3" json:"y,omitempty"`
    26  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
    27  	XXX_unrecognized     []byte   `json:"-"`
    28  	XXX_sizecache        int32    `json:"-"`
    29  }
    30  
    31  func (m *ECP) Reset()         { *m = ECP{} }
    32  func (m *ECP) String() string { return proto.CompactTextString(m) }
    33  func (*ECP) ProtoMessage()    {}
    34  func (*ECP) Descriptor() ([]byte, []int) {
    35  	return fileDescriptor_idemix_ea623f6980eee47e, []int{0}
    36  }
    37  func (m *ECP) XXX_Unmarshal(b []byte) error {
    38  	return xxx_messageInfo_ECP.Unmarshal(m, b)
    39  }
    40  func (m *ECP) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    41  	return xxx_messageInfo_ECP.Marshal(b, m, deterministic)
    42  }
    43  func (dst *ECP) XXX_Merge(src proto.Message) {
    44  	xxx_messageInfo_ECP.Merge(dst, src)
    45  }
    46  func (m *ECP) XXX_Size() int {
    47  	return xxx_messageInfo_ECP.Size(m)
    48  }
    49  func (m *ECP) XXX_DiscardUnknown() {
    50  	xxx_messageInfo_ECP.DiscardUnknown(m)
    51  }
    52  
    53  var xxx_messageInfo_ECP proto.InternalMessageInfo
    54  
    55  func (m *ECP) GetX() []byte {
    56  	if m != nil {
    57  		return m.X
    58  	}
    59  	return nil
    60  }
    61  
    62  func (m *ECP) GetY() []byte {
    63  	if m != nil {
    64  		return m.Y
    65  	}
    66  	return nil
    67  }
    68  
    69  // ECP2 is an elliptic curve point specified by its coordinates
    70  // ECP2 corresponds to an element of the second group (G2)
    71  type ECP2 struct {
    72  	Xa                   []byte   `protobuf:"bytes,1,opt,name=xa,proto3" json:"xa,omitempty"`
    73  	Xb                   []byte   `protobuf:"bytes,2,opt,name=xb,proto3" json:"xb,omitempty"`
    74  	Ya                   []byte   `protobuf:"bytes,3,opt,name=ya,proto3" json:"ya,omitempty"`
    75  	Yb                   []byte   `protobuf:"bytes,4,opt,name=yb,proto3" json:"yb,omitempty"`
    76  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
    77  	XXX_unrecognized     []byte   `json:"-"`
    78  	XXX_sizecache        int32    `json:"-"`
    79  }
    80  
    81  func (m *ECP2) Reset()         { *m = ECP2{} }
    82  func (m *ECP2) String() string { return proto.CompactTextString(m) }
    83  func (*ECP2) ProtoMessage()    {}
    84  func (*ECP2) Descriptor() ([]byte, []int) {
    85  	return fileDescriptor_idemix_ea623f6980eee47e, []int{1}
    86  }
    87  func (m *ECP2) XXX_Unmarshal(b []byte) error {
    88  	return xxx_messageInfo_ECP2.Unmarshal(m, b)
    89  }
    90  func (m *ECP2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    91  	return xxx_messageInfo_ECP2.Marshal(b, m, deterministic)
    92  }
    93  func (dst *ECP2) XXX_Merge(src proto.Message) {
    94  	xxx_messageInfo_ECP2.Merge(dst, src)
    95  }
    96  func (m *ECP2) XXX_Size() int {
    97  	return xxx_messageInfo_ECP2.Size(m)
    98  }
    99  func (m *ECP2) XXX_DiscardUnknown() {
   100  	xxx_messageInfo_ECP2.DiscardUnknown(m)
   101  }
   102  
   103  var xxx_messageInfo_ECP2 proto.InternalMessageInfo
   104  
   105  func (m *ECP2) GetXa() []byte {
   106  	if m != nil {
   107  		return m.Xa
   108  	}
   109  	return nil
   110  }
   111  
   112  func (m *ECP2) GetXb() []byte {
   113  	if m != nil {
   114  		return m.Xb
   115  	}
   116  	return nil
   117  }
   118  
   119  func (m *ECP2) GetYa() []byte {
   120  	if m != nil {
   121  		return m.Ya
   122  	}
   123  	return nil
   124  }
   125  
   126  func (m *ECP2) GetYb() []byte {
   127  	if m != nil {
   128  		return m.Yb
   129  	}
   130  	return nil
   131  }
   132  
   133  // IssuerPublicKey specifies an issuer public key that consists of
   134  // attribute_names - a list of the attribute names of a credential issued by the issuer
   135  // h_sk, h_rand, h_attrs, w, bar_g1, bar_g2 - group elements corresponding to the signing key, randomness, and attributes
   136  // proof_c, proof_s compose a zero-knowledge proof of knowledge of the secret key
   137  // hash is a hash of the public key appended to it
   138  type IssuerPublicKey struct {
   139  	AttributeNames       []string `protobuf:"bytes,1,rep,name=attribute_names,json=attributeNames,proto3" json:"attribute_names,omitempty"`
   140  	HSk                  *ECP     `protobuf:"bytes,2,opt,name=h_sk,json=hSk,proto3" json:"h_sk,omitempty"`
   141  	HRand                *ECP     `protobuf:"bytes,3,opt,name=h_rand,json=hRand,proto3" json:"h_rand,omitempty"`
   142  	HAttrs               []*ECP   `protobuf:"bytes,4,rep,name=h_attrs,json=hAttrs,proto3" json:"h_attrs,omitempty"`
   143  	W                    *ECP2    `protobuf:"bytes,5,opt,name=w,proto3" json:"w,omitempty"`
   144  	BarG1                *ECP     `protobuf:"bytes,6,opt,name=bar_g1,json=barG1,proto3" json:"bar_g1,omitempty"`
   145  	BarG2                *ECP     `protobuf:"bytes,7,opt,name=bar_g2,json=barG2,proto3" json:"bar_g2,omitempty"`
   146  	ProofC               []byte   `protobuf:"bytes,8,opt,name=proof_c,json=proofC,proto3" json:"proof_c,omitempty"`
   147  	ProofS               []byte   `protobuf:"bytes,9,opt,name=proof_s,json=proofS,proto3" json:"proof_s,omitempty"`
   148  	Hash                 []byte   `protobuf:"bytes,10,opt,name=hash,proto3" json:"hash,omitempty"`
   149  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   150  	XXX_unrecognized     []byte   `json:"-"`
   151  	XXX_sizecache        int32    `json:"-"`
   152  }
   153  
   154  func (m *IssuerPublicKey) Reset()         { *m = IssuerPublicKey{} }
   155  func (m *IssuerPublicKey) String() string { return proto.CompactTextString(m) }
   156  func (*IssuerPublicKey) ProtoMessage()    {}
   157  func (*IssuerPublicKey) Descriptor() ([]byte, []int) {
   158  	return fileDescriptor_idemix_ea623f6980eee47e, []int{2}
   159  }
   160  func (m *IssuerPublicKey) XXX_Unmarshal(b []byte) error {
   161  	return xxx_messageInfo_IssuerPublicKey.Unmarshal(m, b)
   162  }
   163  func (m *IssuerPublicKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   164  	return xxx_messageInfo_IssuerPublicKey.Marshal(b, m, deterministic)
   165  }
   166  func (dst *IssuerPublicKey) XXX_Merge(src proto.Message) {
   167  	xxx_messageInfo_IssuerPublicKey.Merge(dst, src)
   168  }
   169  func (m *IssuerPublicKey) XXX_Size() int {
   170  	return xxx_messageInfo_IssuerPublicKey.Size(m)
   171  }
   172  func (m *IssuerPublicKey) XXX_DiscardUnknown() {
   173  	xxx_messageInfo_IssuerPublicKey.DiscardUnknown(m)
   174  }
   175  
   176  var xxx_messageInfo_IssuerPublicKey proto.InternalMessageInfo
   177  
   178  func (m *IssuerPublicKey) GetAttributeNames() []string {
   179  	if m != nil {
   180  		return m.AttributeNames
   181  	}
   182  	return nil
   183  }
   184  
   185  func (m *IssuerPublicKey) GetHSk() *ECP {
   186  	if m != nil {
   187  		return m.HSk
   188  	}
   189  	return nil
   190  }
   191  
   192  func (m *IssuerPublicKey) GetHRand() *ECP {
   193  	if m != nil {
   194  		return m.HRand
   195  	}
   196  	return nil
   197  }
   198  
   199  func (m *IssuerPublicKey) GetHAttrs() []*ECP {
   200  	if m != nil {
   201  		return m.HAttrs
   202  	}
   203  	return nil
   204  }
   205  
   206  func (m *IssuerPublicKey) GetW() *ECP2 {
   207  	if m != nil {
   208  		return m.W
   209  	}
   210  	return nil
   211  }
   212  
   213  func (m *IssuerPublicKey) GetBarG1() *ECP {
   214  	if m != nil {
   215  		return m.BarG1
   216  	}
   217  	return nil
   218  }
   219  
   220  func (m *IssuerPublicKey) GetBarG2() *ECP {
   221  	if m != nil {
   222  		return m.BarG2
   223  	}
   224  	return nil
   225  }
   226  
   227  func (m *IssuerPublicKey) GetProofC() []byte {
   228  	if m != nil {
   229  		return m.ProofC
   230  	}
   231  	return nil
   232  }
   233  
   234  func (m *IssuerPublicKey) GetProofS() []byte {
   235  	if m != nil {
   236  		return m.ProofS
   237  	}
   238  	return nil
   239  }
   240  
   241  func (m *IssuerPublicKey) GetHash() []byte {
   242  	if m != nil {
   243  		return m.Hash
   244  	}
   245  	return nil
   246  }
   247  
   248  // IssuerKey specifies an issuer key pair that consists of
   249  // ISk - the issuer secret key and
   250  // IssuerPublicKey - the issuer public key
   251  type IssuerKey struct {
   252  	Isk                  []byte           `protobuf:"bytes,1,opt,name=isk,proto3" json:"isk,omitempty"`
   253  	Ipk                  *IssuerPublicKey `protobuf:"bytes,2,opt,name=ipk,proto3" json:"ipk,omitempty"`
   254  	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
   255  	XXX_unrecognized     []byte           `json:"-"`
   256  	XXX_sizecache        int32            `json:"-"`
   257  }
   258  
   259  func (m *IssuerKey) Reset()         { *m = IssuerKey{} }
   260  func (m *IssuerKey) String() string { return proto.CompactTextString(m) }
   261  func (*IssuerKey) ProtoMessage()    {}
   262  func (*IssuerKey) Descriptor() ([]byte, []int) {
   263  	return fileDescriptor_idemix_ea623f6980eee47e, []int{3}
   264  }
   265  func (m *IssuerKey) XXX_Unmarshal(b []byte) error {
   266  	return xxx_messageInfo_IssuerKey.Unmarshal(m, b)
   267  }
   268  func (m *IssuerKey) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   269  	return xxx_messageInfo_IssuerKey.Marshal(b, m, deterministic)
   270  }
   271  func (dst *IssuerKey) XXX_Merge(src proto.Message) {
   272  	xxx_messageInfo_IssuerKey.Merge(dst, src)
   273  }
   274  func (m *IssuerKey) XXX_Size() int {
   275  	return xxx_messageInfo_IssuerKey.Size(m)
   276  }
   277  func (m *IssuerKey) XXX_DiscardUnknown() {
   278  	xxx_messageInfo_IssuerKey.DiscardUnknown(m)
   279  }
   280  
   281  var xxx_messageInfo_IssuerKey proto.InternalMessageInfo
   282  
   283  func (m *IssuerKey) GetIsk() []byte {
   284  	if m != nil {
   285  		return m.Isk
   286  	}
   287  	return nil
   288  }
   289  
   290  func (m *IssuerKey) GetIpk() *IssuerPublicKey {
   291  	if m != nil {
   292  		return m.Ipk
   293  	}
   294  	return nil
   295  }
   296  
   297  // Credential specifies a credential object that consists of
   298  // a, b, e, s - signature value
   299  // attrs - attribute values
   300  type Credential struct {
   301  	A                    *ECP     `protobuf:"bytes,1,opt,name=a,proto3" json:"a,omitempty"`
   302  	B                    *ECP     `protobuf:"bytes,2,opt,name=b,proto3" json:"b,omitempty"`
   303  	E                    []byte   `protobuf:"bytes,3,opt,name=e,proto3" json:"e,omitempty"`
   304  	S                    []byte   `protobuf:"bytes,4,opt,name=s,proto3" json:"s,omitempty"`
   305  	Attrs                [][]byte `protobuf:"bytes,5,rep,name=attrs,proto3" json:"attrs,omitempty"`
   306  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   307  	XXX_unrecognized     []byte   `json:"-"`
   308  	XXX_sizecache        int32    `json:"-"`
   309  }
   310  
   311  func (m *Credential) Reset()         { *m = Credential{} }
   312  func (m *Credential) String() string { return proto.CompactTextString(m) }
   313  func (*Credential) ProtoMessage()    {}
   314  func (*Credential) Descriptor() ([]byte, []int) {
   315  	return fileDescriptor_idemix_ea623f6980eee47e, []int{4}
   316  }
   317  func (m *Credential) XXX_Unmarshal(b []byte) error {
   318  	return xxx_messageInfo_Credential.Unmarshal(m, b)
   319  }
   320  func (m *Credential) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   321  	return xxx_messageInfo_Credential.Marshal(b, m, deterministic)
   322  }
   323  func (dst *Credential) XXX_Merge(src proto.Message) {
   324  	xxx_messageInfo_Credential.Merge(dst, src)
   325  }
   326  func (m *Credential) XXX_Size() int {
   327  	return xxx_messageInfo_Credential.Size(m)
   328  }
   329  func (m *Credential) XXX_DiscardUnknown() {
   330  	xxx_messageInfo_Credential.DiscardUnknown(m)
   331  }
   332  
   333  var xxx_messageInfo_Credential proto.InternalMessageInfo
   334  
   335  func (m *Credential) GetA() *ECP {
   336  	if m != nil {
   337  		return m.A
   338  	}
   339  	return nil
   340  }
   341  
   342  func (m *Credential) GetB() *ECP {
   343  	if m != nil {
   344  		return m.B
   345  	}
   346  	return nil
   347  }
   348  
   349  func (m *Credential) GetE() []byte {
   350  	if m != nil {
   351  		return m.E
   352  	}
   353  	return nil
   354  }
   355  
   356  func (m *Credential) GetS() []byte {
   357  	if m != nil {
   358  		return m.S
   359  	}
   360  	return nil
   361  }
   362  
   363  func (m *Credential) GetAttrs() [][]byte {
   364  	if m != nil {
   365  		return m.Attrs
   366  	}
   367  	return nil
   368  }
   369  
   370  // CredRequest specifies a credential request object that consists of
   371  // nym - a pseudonym, which is a commitment to the user secret
   372  // issuer_nonce - a random nonce provided by the issuer
   373  // proof_c, proof_s - a zero-knowledge proof of knowledge of the
   374  // user secret inside Nym
   375  type CredRequest struct {
   376  	Nym                  *ECP     `protobuf:"bytes,1,opt,name=nym,proto3" json:"nym,omitempty"`
   377  	IssuerNonce          []byte   `protobuf:"bytes,2,opt,name=issuer_nonce,json=issuerNonce,proto3" json:"issuer_nonce,omitempty"`
   378  	ProofC               []byte   `protobuf:"bytes,3,opt,name=proof_c,json=proofC,proto3" json:"proof_c,omitempty"`
   379  	ProofS               []byte   `protobuf:"bytes,4,opt,name=proof_s,json=proofS,proto3" json:"proof_s,omitempty"`
   380  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   381  	XXX_unrecognized     []byte   `json:"-"`
   382  	XXX_sizecache        int32    `json:"-"`
   383  }
   384  
   385  func (m *CredRequest) Reset()         { *m = CredRequest{} }
   386  func (m *CredRequest) String() string { return proto.CompactTextString(m) }
   387  func (*CredRequest) ProtoMessage()    {}
   388  func (*CredRequest) Descriptor() ([]byte, []int) {
   389  	return fileDescriptor_idemix_ea623f6980eee47e, []int{5}
   390  }
   391  func (m *CredRequest) XXX_Unmarshal(b []byte) error {
   392  	return xxx_messageInfo_CredRequest.Unmarshal(m, b)
   393  }
   394  func (m *CredRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   395  	return xxx_messageInfo_CredRequest.Marshal(b, m, deterministic)
   396  }
   397  func (dst *CredRequest) XXX_Merge(src proto.Message) {
   398  	xxx_messageInfo_CredRequest.Merge(dst, src)
   399  }
   400  func (m *CredRequest) XXX_Size() int {
   401  	return xxx_messageInfo_CredRequest.Size(m)
   402  }
   403  func (m *CredRequest) XXX_DiscardUnknown() {
   404  	xxx_messageInfo_CredRequest.DiscardUnknown(m)
   405  }
   406  
   407  var xxx_messageInfo_CredRequest proto.InternalMessageInfo
   408  
   409  func (m *CredRequest) GetNym() *ECP {
   410  	if m != nil {
   411  		return m.Nym
   412  	}
   413  	return nil
   414  }
   415  
   416  func (m *CredRequest) GetIssuerNonce() []byte {
   417  	if m != nil {
   418  		return m.IssuerNonce
   419  	}
   420  	return nil
   421  }
   422  
   423  func (m *CredRequest) GetProofC() []byte {
   424  	if m != nil {
   425  		return m.ProofC
   426  	}
   427  	return nil
   428  }
   429  
   430  func (m *CredRequest) GetProofS() []byte {
   431  	if m != nil {
   432  		return m.ProofS
   433  	}
   434  	return nil
   435  }
   436  
   437  // Signature specifies a signature object that consists of
   438  // a_prime, a_bar, b_prime, proof_* - randomized credential signature values
   439  // and a zero-knowledge proof of knowledge of a credential
   440  // and the corresponding user secret together with the attribute values
   441  // nonce - a fresh nonce used for the signature
   442  // nym - a fresh pseudonym (a commitment to to the user secret)
   443  type Signature struct {
   444  	APrime               *ECP                `protobuf:"bytes,1,opt,name=a_prime,json=aPrime,proto3" json:"a_prime,omitempty"`
   445  	ABar                 *ECP                `protobuf:"bytes,2,opt,name=a_bar,json=aBar,proto3" json:"a_bar,omitempty"`
   446  	BPrime               *ECP                `protobuf:"bytes,3,opt,name=b_prime,json=bPrime,proto3" json:"b_prime,omitempty"`
   447  	ProofC               []byte              `protobuf:"bytes,4,opt,name=proof_c,json=proofC,proto3" json:"proof_c,omitempty"`
   448  	ProofSSk             []byte              `protobuf:"bytes,5,opt,name=proof_s_sk,json=proofSSk,proto3" json:"proof_s_sk,omitempty"`
   449  	ProofSE              []byte              `protobuf:"bytes,6,opt,name=proof_s_e,json=proofSE,proto3" json:"proof_s_e,omitempty"`
   450  	ProofSR2             []byte              `protobuf:"bytes,7,opt,name=proof_s_r2,json=proofSR2,proto3" json:"proof_s_r2,omitempty"`
   451  	ProofSR3             []byte              `protobuf:"bytes,8,opt,name=proof_s_r3,json=proofSR3,proto3" json:"proof_s_r3,omitempty"`
   452  	ProofSSPrime         []byte              `protobuf:"bytes,9,opt,name=proof_s_s_prime,json=proofSSPrime,proto3" json:"proof_s_s_prime,omitempty"`
   453  	ProofSAttrs          [][]byte            `protobuf:"bytes,10,rep,name=proof_s_attrs,json=proofSAttrs,proto3" json:"proof_s_attrs,omitempty"`
   454  	Nonce                []byte              `protobuf:"bytes,11,opt,name=nonce,proto3" json:"nonce,omitempty"`
   455  	Nym                  *ECP                `protobuf:"bytes,12,opt,name=nym,proto3" json:"nym,omitempty"`
   456  	ProofSRNym           []byte              `protobuf:"bytes,13,opt,name=proof_s_r_nym,json=proofSRNym,proto3" json:"proof_s_r_nym,omitempty"`
   457  	RevocationEpochPk    *ECP2               `protobuf:"bytes,14,opt,name=revocation_epoch_pk,json=revocationEpochPk,proto3" json:"revocation_epoch_pk,omitempty"`
   458  	RevocationPkSig      []byte              `protobuf:"bytes,15,opt,name=revocation_pk_sig,json=revocationPkSig,proto3" json:"revocation_pk_sig,omitempty"`
   459  	Epoch                int64               `protobuf:"varint,16,opt,name=epoch,proto3" json:"epoch,omitempty"`
   460  	NonRevocationProof   *NonRevocationProof `protobuf:"bytes,17,opt,name=non_revocation_proof,json=nonRevocationProof,proto3" json:"non_revocation_proof,omitempty"`
   461  	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
   462  	XXX_unrecognized     []byte              `json:"-"`
   463  	XXX_sizecache        int32               `json:"-"`
   464  }
   465  
   466  func (m *Signature) Reset()         { *m = Signature{} }
   467  func (m *Signature) String() string { return proto.CompactTextString(m) }
   468  func (*Signature) ProtoMessage()    {}
   469  func (*Signature) Descriptor() ([]byte, []int) {
   470  	return fileDescriptor_idemix_ea623f6980eee47e, []int{6}
   471  }
   472  func (m *Signature) XXX_Unmarshal(b []byte) error {
   473  	return xxx_messageInfo_Signature.Unmarshal(m, b)
   474  }
   475  func (m *Signature) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   476  	return xxx_messageInfo_Signature.Marshal(b, m, deterministic)
   477  }
   478  func (dst *Signature) XXX_Merge(src proto.Message) {
   479  	xxx_messageInfo_Signature.Merge(dst, src)
   480  }
   481  func (m *Signature) XXX_Size() int {
   482  	return xxx_messageInfo_Signature.Size(m)
   483  }
   484  func (m *Signature) XXX_DiscardUnknown() {
   485  	xxx_messageInfo_Signature.DiscardUnknown(m)
   486  }
   487  
   488  var xxx_messageInfo_Signature proto.InternalMessageInfo
   489  
   490  func (m *Signature) GetAPrime() *ECP {
   491  	if m != nil {
   492  		return m.APrime
   493  	}
   494  	return nil
   495  }
   496  
   497  func (m *Signature) GetABar() *ECP {
   498  	if m != nil {
   499  		return m.ABar
   500  	}
   501  	return nil
   502  }
   503  
   504  func (m *Signature) GetBPrime() *ECP {
   505  	if m != nil {
   506  		return m.BPrime
   507  	}
   508  	return nil
   509  }
   510  
   511  func (m *Signature) GetProofC() []byte {
   512  	if m != nil {
   513  		return m.ProofC
   514  	}
   515  	return nil
   516  }
   517  
   518  func (m *Signature) GetProofSSk() []byte {
   519  	if m != nil {
   520  		return m.ProofSSk
   521  	}
   522  	return nil
   523  }
   524  
   525  func (m *Signature) GetProofSE() []byte {
   526  	if m != nil {
   527  		return m.ProofSE
   528  	}
   529  	return nil
   530  }
   531  
   532  func (m *Signature) GetProofSR2() []byte {
   533  	if m != nil {
   534  		return m.ProofSR2
   535  	}
   536  	return nil
   537  }
   538  
   539  func (m *Signature) GetProofSR3() []byte {
   540  	if m != nil {
   541  		return m.ProofSR3
   542  	}
   543  	return nil
   544  }
   545  
   546  func (m *Signature) GetProofSSPrime() []byte {
   547  	if m != nil {
   548  		return m.ProofSSPrime
   549  	}
   550  	return nil
   551  }
   552  
   553  func (m *Signature) GetProofSAttrs() [][]byte {
   554  	if m != nil {
   555  		return m.ProofSAttrs
   556  	}
   557  	return nil
   558  }
   559  
   560  func (m *Signature) GetNonce() []byte {
   561  	if m != nil {
   562  		return m.Nonce
   563  	}
   564  	return nil
   565  }
   566  
   567  func (m *Signature) GetNym() *ECP {
   568  	if m != nil {
   569  		return m.Nym
   570  	}
   571  	return nil
   572  }
   573  
   574  func (m *Signature) GetProofSRNym() []byte {
   575  	if m != nil {
   576  		return m.ProofSRNym
   577  	}
   578  	return nil
   579  }
   580  
   581  func (m *Signature) GetRevocationEpochPk() *ECP2 {
   582  	if m != nil {
   583  		return m.RevocationEpochPk
   584  	}
   585  	return nil
   586  }
   587  
   588  func (m *Signature) GetRevocationPkSig() []byte {
   589  	if m != nil {
   590  		return m.RevocationPkSig
   591  	}
   592  	return nil
   593  }
   594  
   595  func (m *Signature) GetEpoch() int64 {
   596  	if m != nil {
   597  		return m.Epoch
   598  	}
   599  	return 0
   600  }
   601  
   602  func (m *Signature) GetNonRevocationProof() *NonRevocationProof {
   603  	if m != nil {
   604  		return m.NonRevocationProof
   605  	}
   606  	return nil
   607  }
   608  
   609  // NonRevocationProof contains proof that the credential is not revoked
   610  type NonRevocationProof struct {
   611  	RevocationAlg        int32    `protobuf:"varint,1,opt,name=revocation_alg,json=revocationAlg,proto3" json:"revocation_alg,omitempty"`
   612  	NonRevocationProof   []byte   `protobuf:"bytes,2,opt,name=non_revocation_proof,json=nonRevocationProof,proto3" json:"non_revocation_proof,omitempty"`
   613  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   614  	XXX_unrecognized     []byte   `json:"-"`
   615  	XXX_sizecache        int32    `json:"-"`
   616  }
   617  
   618  func (m *NonRevocationProof) Reset()         { *m = NonRevocationProof{} }
   619  func (m *NonRevocationProof) String() string { return proto.CompactTextString(m) }
   620  func (*NonRevocationProof) ProtoMessage()    {}
   621  func (*NonRevocationProof) Descriptor() ([]byte, []int) {
   622  	return fileDescriptor_idemix_ea623f6980eee47e, []int{7}
   623  }
   624  func (m *NonRevocationProof) XXX_Unmarshal(b []byte) error {
   625  	return xxx_messageInfo_NonRevocationProof.Unmarshal(m, b)
   626  }
   627  func (m *NonRevocationProof) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   628  	return xxx_messageInfo_NonRevocationProof.Marshal(b, m, deterministic)
   629  }
   630  func (dst *NonRevocationProof) XXX_Merge(src proto.Message) {
   631  	xxx_messageInfo_NonRevocationProof.Merge(dst, src)
   632  }
   633  func (m *NonRevocationProof) XXX_Size() int {
   634  	return xxx_messageInfo_NonRevocationProof.Size(m)
   635  }
   636  func (m *NonRevocationProof) XXX_DiscardUnknown() {
   637  	xxx_messageInfo_NonRevocationProof.DiscardUnknown(m)
   638  }
   639  
   640  var xxx_messageInfo_NonRevocationProof proto.InternalMessageInfo
   641  
   642  func (m *NonRevocationProof) GetRevocationAlg() int32 {
   643  	if m != nil {
   644  		return m.RevocationAlg
   645  	}
   646  	return 0
   647  }
   648  
   649  func (m *NonRevocationProof) GetNonRevocationProof() []byte {
   650  	if m != nil {
   651  		return m.NonRevocationProof
   652  	}
   653  	return nil
   654  }
   655  
   656  // NymSignature specifies a signature object that signs a message
   657  // with respect to a pseudonym. It differs from the standard idemix.signature in the fact that
   658  // the  standard signature object also proves that the pseudonym is based on a secret certified by
   659  // a CA (issuer), whereas NymSignature only proves that the the owner of the pseudonym
   660  // signed the message
   661  type NymSignature struct {
   662  	// proof_c is the Fiat-Shamir challenge of the ZKP
   663  	ProofC []byte `protobuf:"bytes,1,opt,name=proof_c,json=proofC,proto3" json:"proof_c,omitempty"`
   664  	// proof_s_sk is the s-value proving knowledge of the user secret key
   665  	ProofSSk []byte `protobuf:"bytes,2,opt,name=proof_s_sk,json=proofSSk,proto3" json:"proof_s_sk,omitempty"`
   666  	// proof_s_r_nym is the s-value proving knowledge of the pseudonym secret
   667  	ProofSRNym []byte `protobuf:"bytes,3,opt,name=proof_s_r_nym,json=proofSRNym,proto3" json:"proof_s_r_nym,omitempty"`
   668  	// nonce is a fresh nonce used for the signature
   669  	Nonce                []byte   `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"`
   670  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   671  	XXX_unrecognized     []byte   `json:"-"`
   672  	XXX_sizecache        int32    `json:"-"`
   673  }
   674  
   675  func (m *NymSignature) Reset()         { *m = NymSignature{} }
   676  func (m *NymSignature) String() string { return proto.CompactTextString(m) }
   677  func (*NymSignature) ProtoMessage()    {}
   678  func (*NymSignature) Descriptor() ([]byte, []int) {
   679  	return fileDescriptor_idemix_ea623f6980eee47e, []int{8}
   680  }
   681  func (m *NymSignature) XXX_Unmarshal(b []byte) error {
   682  	return xxx_messageInfo_NymSignature.Unmarshal(m, b)
   683  }
   684  func (m *NymSignature) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   685  	return xxx_messageInfo_NymSignature.Marshal(b, m, deterministic)
   686  }
   687  func (dst *NymSignature) XXX_Merge(src proto.Message) {
   688  	xxx_messageInfo_NymSignature.Merge(dst, src)
   689  }
   690  func (m *NymSignature) XXX_Size() int {
   691  	return xxx_messageInfo_NymSignature.Size(m)
   692  }
   693  func (m *NymSignature) XXX_DiscardUnknown() {
   694  	xxx_messageInfo_NymSignature.DiscardUnknown(m)
   695  }
   696  
   697  var xxx_messageInfo_NymSignature proto.InternalMessageInfo
   698  
   699  func (m *NymSignature) GetProofC() []byte {
   700  	if m != nil {
   701  		return m.ProofC
   702  	}
   703  	return nil
   704  }
   705  
   706  func (m *NymSignature) GetProofSSk() []byte {
   707  	if m != nil {
   708  		return m.ProofSSk
   709  	}
   710  	return nil
   711  }
   712  
   713  func (m *NymSignature) GetProofSRNym() []byte {
   714  	if m != nil {
   715  		return m.ProofSRNym
   716  	}
   717  	return nil
   718  }
   719  
   720  func (m *NymSignature) GetNonce() []byte {
   721  	if m != nil {
   722  		return m.Nonce
   723  	}
   724  	return nil
   725  }
   726  
   727  type CredentialRevocationInformation struct {
   728  	// epoch contains the epoch (time window) in which this CRI is valid
   729  	Epoch int64 `protobuf:"varint,1,opt,name=epoch,proto3" json:"epoch,omitempty"`
   730  	// epoch_pk is the public key that is used by the revocation authority in this epoch
   731  	EpochPk *ECP2 `protobuf:"bytes,2,opt,name=epoch_pk,json=epochPk,proto3" json:"epoch_pk,omitempty"`
   732  	// epoch_pk_sig is a signature on the EpochPK valid under the revocation authority's long term key
   733  	EpochPkSig []byte `protobuf:"bytes,3,opt,name=epoch_pk_sig,json=epochPkSig,proto3" json:"epoch_pk_sig,omitempty"`
   734  	// revocation_alg denotes which revocation algorithm is used
   735  	RevocationAlg int32 `protobuf:"varint,4,opt,name=revocation_alg,json=revocationAlg,proto3" json:"revocation_alg,omitempty"`
   736  	// revocation_data contains data specific to the revocation algorithm used
   737  	RevocationData       []byte   `protobuf:"bytes,5,opt,name=revocation_data,json=revocationData,proto3" json:"revocation_data,omitempty"`
   738  	XXX_NoUnkeyedLiteral struct{} `json:"-"`
   739  	XXX_unrecognized     []byte   `json:"-"`
   740  	XXX_sizecache        int32    `json:"-"`
   741  }
   742  
   743  func (m *CredentialRevocationInformation) Reset()         { *m = CredentialRevocationInformation{} }
   744  func (m *CredentialRevocationInformation) String() string { return proto.CompactTextString(m) }
   745  func (*CredentialRevocationInformation) ProtoMessage()    {}
   746  func (*CredentialRevocationInformation) Descriptor() ([]byte, []int) {
   747  	return fileDescriptor_idemix_ea623f6980eee47e, []int{9}
   748  }
   749  func (m *CredentialRevocationInformation) XXX_Unmarshal(b []byte) error {
   750  	return xxx_messageInfo_CredentialRevocationInformation.Unmarshal(m, b)
   751  }
   752  func (m *CredentialRevocationInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   753  	return xxx_messageInfo_CredentialRevocationInformation.Marshal(b, m, deterministic)
   754  }
   755  func (dst *CredentialRevocationInformation) XXX_Merge(src proto.Message) {
   756  	xxx_messageInfo_CredentialRevocationInformation.Merge(dst, src)
   757  }
   758  func (m *CredentialRevocationInformation) XXX_Size() int {
   759  	return xxx_messageInfo_CredentialRevocationInformation.Size(m)
   760  }
   761  func (m *CredentialRevocationInformation) XXX_DiscardUnknown() {
   762  	xxx_messageInfo_CredentialRevocationInformation.DiscardUnknown(m)
   763  }
   764  
   765  var xxx_messageInfo_CredentialRevocationInformation proto.InternalMessageInfo
   766  
   767  func (m *CredentialRevocationInformation) GetEpoch() int64 {
   768  	if m != nil {
   769  		return m.Epoch
   770  	}
   771  	return 0
   772  }
   773  
   774  func (m *CredentialRevocationInformation) GetEpochPk() *ECP2 {
   775  	if m != nil {
   776  		return m.EpochPk
   777  	}
   778  	return nil
   779  }
   780  
   781  func (m *CredentialRevocationInformation) GetEpochPkSig() []byte {
   782  	if m != nil {
   783  		return m.EpochPkSig
   784  	}
   785  	return nil
   786  }
   787  
   788  func (m *CredentialRevocationInformation) GetRevocationAlg() int32 {
   789  	if m != nil {
   790  		return m.RevocationAlg
   791  	}
   792  	return 0
   793  }
   794  
   795  func (m *CredentialRevocationInformation) GetRevocationData() []byte {
   796  	if m != nil {
   797  		return m.RevocationData
   798  	}
   799  	return nil
   800  }
   801  
   802  func init() {
   803  	proto.RegisterType((*ECP)(nil), "ECP")
   804  	proto.RegisterType((*ECP2)(nil), "ECP2")
   805  	proto.RegisterType((*IssuerPublicKey)(nil), "IssuerPublicKey")
   806  	proto.RegisterType((*IssuerKey)(nil), "IssuerKey")
   807  	proto.RegisterType((*Credential)(nil), "Credential")
   808  	proto.RegisterType((*CredRequest)(nil), "CredRequest")
   809  	proto.RegisterType((*Signature)(nil), "Signature")
   810  	proto.RegisterType((*NonRevocationProof)(nil), "NonRevocationProof")
   811  	proto.RegisterType((*NymSignature)(nil), "NymSignature")
   812  	proto.RegisterType((*CredentialRevocationInformation)(nil), "CredentialRevocationInformation")
   813  }
   814  
   815  func init() { proto.RegisterFile("idemix/idemix.proto", fileDescriptor_idemix_ea623f6980eee47e) }
   816  
   817  var fileDescriptor_idemix_ea623f6980eee47e = []byte{
   818  	// 816 bytes of a gzipped FileDescriptorProto
   819  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x55, 0xdd, 0x6e, 0xe2, 0x46,
   820  	0x14, 0xd6, 0x60, 0x9b, 0x84, 0x83, 0x13, 0xb2, 0x93, 0xa8, 0x3b, 0xfd, 0x53, 0x59, 0xab, 0xdb,
   821  	0x8d, 0x7a, 0x41, 0xba, 0x44, 0x7d, 0x80, 0x2c, 0xa5, 0xd5, 0xaa, 0x12, 0x42, 0xe6, 0xae, 0x37,
   822  	0xa3, 0x19, 0x18, 0xb0, 0x05, 0xb6, 0xe9, 0xd8, 0x74, 0x71, 0x2f, 0xfa, 0x34, 0x7d, 0x9b, 0x5e,
   823  	0xf4, 0x95, 0xaa, 0xf9, 0x01, 0x0f, 0x61, 0xb7, 0x57, 0xf1, 0x39, 0xdf, 0xf9, 0xe3, 0xfb, 0x3e,
   824  	0xc7, 0x70, 0x9b, 0x2e, 0x44, 0x96, 0xee, 0x1f, 0xcc, 0x9f, 0xc1, 0x56, 0x16, 0x55, 0x11, 0xbd,
   825  	0x02, 0x6f, 0x3c, 0x9a, 0xe2, 0x10, 0xd0, 0x9e, 0xa0, 0x3e, 0xba, 0x0f, 0x63, 0xb4, 0x57, 0x51,
   826  	0x4d, 0x5a, 0x26, 0xaa, 0xa3, 0x9f, 0xc1, 0x1f, 0x8f, 0xa6, 0x43, 0x7c, 0x0d, 0xad, 0x3d, 0xb3,
   827  	0x45, 0xad, 0x3d, 0xd3, 0x31, 0xb7, 0x65, 0xad, 0x3d, 0x57, 0x71, 0xcd, 0x88, 0x67, 0xe2, 0x5a,
   828  	0xe3, 0x35, 0x27, 0xbe, 0x8d, 0x79, 0xf4, 0x77, 0x0b, 0x7a, 0xef, 0xcb, 0x72, 0x27, 0xe4, 0x74,
   829  	0xc7, 0x37, 0xe9, 0xfc, 0x57, 0x51, 0xe3, 0x37, 0xd0, 0x63, 0x55, 0x25, 0x53, 0xbe, 0xab, 0x04,
   830  	0xcd, 0x59, 0x26, 0x4a, 0x82, 0xfa, 0xde, 0x7d, 0x27, 0xbe, 0x3e, 0xa6, 0x27, 0x2a, 0x8b, 0x5f,
   831  	0x82, 0x9f, 0xd0, 0x72, 0xad, 0xd7, 0x75, 0x87, 0xfe, 0x60, 0x3c, 0x9a, 0xc6, 0x5e, 0x32, 0x5b,
   832  	0xe3, 0x2f, 0xa1, 0x9d, 0x50, 0xc9, 0xf2, 0x85, 0xde, 0x7c, 0x80, 0x82, 0x24, 0x66, 0xf9, 0x02,
   833  	0x7f, 0x0d, 0x17, 0x09, 0x55, 0x93, 0x4a, 0xe2, 0xf7, 0xbd, 0x23, 0xda, 0x4e, 0x9e, 0x54, 0x0e,
   834  	0xdf, 0x02, 0xfa, 0x40, 0x02, 0xdd, 0x16, 0x28, 0x60, 0x18, 0xa3, 0x0f, 0x6a, 0x20, 0x67, 0x92,
   835  	0xae, 0xde, 0x92, 0xb6, 0x3b, 0x90, 0x33, 0xf9, 0xcb, 0xdb, 0x23, 0x38, 0x24, 0x17, 0xcf, 0xc1,
   836  	0x21, 0x7e, 0x09, 0x17, 0x5b, 0x59, 0x14, 0x4b, 0x3a, 0x27, 0x97, 0xfa, 0x57, 0xb7, 0x75, 0x38,
   837  	0x6a, 0x80, 0x92, 0x74, 0x1c, 0x60, 0x86, 0x31, 0xf8, 0x09, 0x2b, 0x13, 0x02, 0x3a, 0xab, 0x9f,
   838  	0xa3, 0x27, 0xe8, 0x18, 0x96, 0x14, 0x3f, 0x37, 0xe0, 0xa5, 0xe5, 0xda, 0x92, 0xae, 0x1e, 0x71,
   839  	0x04, 0x5e, 0xba, 0x3d, 0xf0, 0x70, 0x33, 0x78, 0x46, 0x68, 0xac, 0xc0, 0x68, 0x09, 0x30, 0x92,
   840  	0x62, 0x21, 0xf2, 0x2a, 0x65, 0x1b, 0x8c, 0x01, 0x19, 0xd9, 0x0e, 0xe7, 0x22, 0xa6, 0x72, 0xfc,
   841  	0x84, 0x4b, 0xc4, 0x95, 0xea, 0xc2, 0xca, 0x87, 0x84, 0x8a, 0x4a, 0x2b, 0x1e, 0x2a, 0xf1, 0x1d,
   842  	0x04, 0x86, 0xc6, 0xa0, 0xef, 0xdd, 0x87, 0xb1, 0x09, 0xa2, 0x3f, 0xa1, 0xab, 0xf6, 0xc4, 0xe2,
   843  	0xf7, 0x9d, 0x28, 0x2b, 0xfc, 0x19, 0x78, 0x79, 0x9d, 0x9d, 0xac, 0x52, 0x09, 0xfc, 0x0a, 0xc2,
   844  	0x54, 0x9f, 0x49, 0xf3, 0x22, 0x9f, 0x0b, 0x6b, 0x99, 0xae, 0xc9, 0x4d, 0x54, 0xca, 0xa5, 0xce,
   845  	0xfb, 0x14, 0x75, 0xbe, 0x4b, 0x5d, 0xf4, 0xaf, 0x0f, 0x9d, 0x59, 0xba, 0xca, 0x59, 0xb5, 0x93,
   846  	0x42, 0x09, 0xcd, 0xe8, 0x56, 0xa6, 0x99, 0x38, 0x59, 0xdf, 0x66, 0x53, 0x95, 0xc3, 0x9f, 0x43,
   847  	0xc0, 0x28, 0x67, 0xf2, 0xe4, 0x27, 0xfb, 0xec, 0x1d, 0x93, 0xaa, 0x93, 0xdb, 0x4e, 0xd7, 0x40,
   848  	0x6d, 0x6e, 0x3a, 0x9d, 0xc3, 0xfc, 0x93, 0xc3, 0xbe, 0x02, 0xb0, 0x87, 0x29, 0x5b, 0x06, 0x1a,
   849  	0xbb, 0x34, 0xb7, 0xcd, 0xd6, 0xf8, 0x0b, 0xe8, 0x1c, 0x50, 0xa1, 0x7d, 0x14, 0xc6, 0x66, 0xce,
   850  	0x6c, 0xec, 0x76, 0x4a, 0xe3, 0xa3, 0x63, 0x67, 0x3c, 0x3c, 0x41, 0x1f, 0xad, 0x8f, 0x0e, 0xe8,
   851  	0x23, 0x7e, 0x0d, 0xbd, 0xe3, 0x56, 0x7b, 0xb5, 0x71, 0x54, 0x68, 0x57, 0x9b, 0xab, 0x23, 0xb8,
   852  	0x3a, 0x94, 0x19, 0xd9, 0x40, 0xcb, 0xd6, 0x35, 0x45, 0xc6, 0xfc, 0x77, 0x10, 0x18, 0x39, 0xba,
   853  	0x7a, 0x80, 0x09, 0x0e, 0x1a, 0x86, 0xe7, 0x1a, 0x1e, 0x27, 0x4a, 0xaa, 0x2a, 0xae, 0x74, 0x17,
   854  	0xd8, 0xcb, 0x26, 0x75, 0x86, 0x7f, 0x84, 0x5b, 0x29, 0xfe, 0x28, 0xe6, 0xac, 0x4a, 0x8b, 0x9c,
   855  	0x8a, 0x6d, 0x31, 0x4f, 0xe8, 0x76, 0x4d, 0xae, 0xdd, 0xf7, 0xeb, 0x45, 0x53, 0x31, 0x56, 0x05,
   856  	0xd3, 0x35, 0xfe, 0x1e, 0x9c, 0x24, 0xdd, 0xae, 0x69, 0x99, 0xae, 0x48, 0x4f, 0x4f, 0xef, 0x35,
   857  	0xc0, 0x74, 0x3d, 0x4b, 0x57, 0xea, 0x66, 0x3d, 0x97, 0xdc, 0xf4, 0xd1, 0xbd, 0x17, 0x9b, 0x00,
   858  	0x8f, 0xe1, 0x2e, 0x2f, 0x72, 0xea, 0x4e, 0x51, 0x57, 0x91, 0x17, 0x7a, 0xf3, 0xed, 0x60, 0x52,
   859  	0xe4, 0x71, 0x33, 0x48, 0x41, 0x31, 0xce, 0xcf, 0x72, 0x51, 0x06, 0xf8, 0xbc, 0x12, 0xbf, 0x86,
   860  	0x6b, 0x67, 0x30, 0xdb, 0xac, 0xb4, 0xc1, 0x82, 0xf8, 0xaa, 0xc9, 0x3e, 0x6d, 0x56, 0xf8, 0x87,
   861  	0x4f, 0xdc, 0x60, 0xbc, 0xfe, 0xb1, 0x75, 0x7f, 0x41, 0x38, 0xa9, 0xb3, 0xc6, 0xc2, 0x8e, 0xd3,
   862  	0xd0, 0xff, 0x38, 0xad, 0xf5, 0xcc, 0x69, 0x67, 0xc2, 0x78, 0x67, 0xc2, 0x1c, 0x95, 0xf6, 0x1d,
   863  	0xa5, 0xa3, 0x7f, 0x10, 0x7c, 0xd3, 0xfc, 0x97, 0x68, 0xae, 0x7b, 0x9f, 0x2f, 0x0b, 0x99, 0xe9,
   864  	0xc7, 0x86, 0x6f, 0xe4, 0xf2, 0xdd, 0x87, 0xcb, 0xa3, 0xba, 0x2d, 0x57, 0xdd, 0x0b, 0x61, 0x35,
   865  	0xed, 0x43, 0x78, 0xa8, 0xd0, 0x72, 0xda, 0x9b, 0x2c, 0xac, 0x94, 0x3c, 0xa7, 0xd5, 0xff, 0x18,
   866  	0xad, 0x6f, 0xc0, 0xf1, 0x00, 0x5d, 0xb0, 0x8a, 0xd9, 0x57, 0xcd, 0xe9, 0xfe, 0x89, 0x55, 0xec,
   867  	0xdd, 0x77, 0xbf, 0x7d, 0xbb, 0x4a, 0xab, 0x64, 0xc7, 0x07, 0xf3, 0x22, 0x7b, 0x48, 0xea, 0xad,
   868  	0x90, 0x1b, 0xb1, 0x58, 0x09, 0xf9, 0xb0, 0x64, 0x5c, 0xa6, 0x73, 0xfb, 0xd5, 0xe3, 0x6d, 0xfd,
   869  	0xd9, 0x7b, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xaa, 0xcc, 0x9c, 0x10, 0x0d, 0x07, 0x00, 0x00,
   870  }