github.com/suchongming/fabric@v2.1.1+incompatible/idemix/idemix.pb.go (about)

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