gitee.com/zhaochuninhefei/fabric-ca-gm@v0.0.2/lib/serveridemixenroll.go (about)

     1  /*
     2  Copyright IBM Corp. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package lib
     8  
     9  import (
    10  	"gitee.com/zhaochuninhefei/fabric-ca-gm/internal/pkg/api"
    11  	"gitee.com/zhaochuninhefei/fabric-ca-gm/lib/server/idemix"
    12  	"gitee.com/zhaochuninhefei/fabric-ca-gm/lib/server/user"
    13  	log "gitee.com/zhaochuninhefei/zcgolog/zclog"
    14  )
    15  
    16  func newIdemixEnrollEndpoint(s *Server) *serverEndpoint {
    17  	return &serverEndpoint{
    18  		Path:      "idemix/credential",
    19  		Methods:   []string{"POST"},
    20  		Handler:   handleIdemixEnrollReq,
    21  		Server:    s,
    22  		successRC: 201,
    23  	}
    24  }
    25  
    26  // handleIdemixEnrollReq handles an Idemix enroll request
    27  func handleIdemixEnrollReq(ctx *serverRequestContextImpl) (interface{}, error) {
    28  	ca, err := ctx.GetCA()
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	idemixEnrollResp, err := ca.issuer.IssueCredential(&idemixServerCtx{ctx})
    34  	if err != nil {
    35  		log.Errorf("Error processing the /idemix/credential request: %s", err.Error())
    36  		return nil, err
    37  	}
    38  	resp := newIdemixEnrollmentResponseNet(idemixEnrollResp)
    39  	err = ctx.ca.fillCAInfo(&resp.CAInfo)
    40  	if err != nil {
    41  		return nil, err
    42  	}
    43  	return resp, nil
    44  }
    45  
    46  // newIdemixEnrollmentResponseNet returns an instance of IdemixEnrollmentResponseNet that is
    47  // constructed using the specified idemix.EnrollmentResponse object
    48  func newIdemixEnrollmentResponseNet(resp *idemix.EnrollmentResponse) api.IdemixEnrollmentResponseNet {
    49  	return api.IdemixEnrollmentResponseNet{
    50  		Nonce:      resp.Nonce,
    51  		Attrs:      resp.Attrs,
    52  		Credential: resp.Credential,
    53  		CRI:        resp.CRI,
    54  		CAInfo:     api.CAInfoResponseNet{}}
    55  }
    56  
    57  // idemixServerCtx implements idemix.ServerRequestContext
    58  type idemixServerCtx struct {
    59  	srvCtx *serverRequestContextImpl
    60  }
    61  
    62  func (c *idemixServerCtx) IsBasicAuth() bool {
    63  	_, _, isBasicAuth := c.srvCtx.req.BasicAuth()
    64  	return isBasicAuth
    65  }
    66  func (c *idemixServerCtx) BasicAuthentication() (string, error) {
    67  	return c.srvCtx.BasicAuthentication()
    68  }
    69  func (c *idemixServerCtx) TokenAuthentication() (string, error) {
    70  	return c.srvCtx.TokenAuthentication()
    71  }
    72  func (c *idemixServerCtx) GetCaller() (user.User, error) {
    73  	return c.srvCtx.GetCaller()
    74  }
    75  func (c *idemixServerCtx) ReadBody(body interface{}) error {
    76  	return c.srvCtx.ReadBody(body)
    77  }