views.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:IoT_pki 作者: zibawa 项目源码 文件源码
def cert_collect_pkcs12(request,token):
    #when supplied with token, looks up request, checks approval status and returns appropriate HttpResponse
    #in this case token is taken from browser


    certs = Cert_request.objects.filter(token=token)

    try:
        cert_request=certs[0]
    except:
        return HttpResponse(status=404,content="Not found")    
    logger.info("retrieved cert %s",cert_request.common_name)

    if (cert_request.issued==True):
        logger.info("Certificate already issued %s",cert_request.common_name)
        response= HttpResponse(status=410,content="Cert already issued")
    elif (cert_request.approved==False):
        logger.debug("Certificate pending approval %s",cert_request.common_name)
        response=HttpResponse(status=403, content="Pending approval")         
    else:    
        logger.info("Generating cert %s",cert_request.common_name)
        datastream=generateNewX509(cert_request)

        c=OpenSSL.crypto
        cert=c.load_certificate(c.FILETYPE_PEM, datastream)
        key=c.load_privatekey(c.FILETYPE_PEM, datastream)
        p12 = OpenSSL.crypto.PKCS12()
        p12.set_privatekey(key)
        p12.set_certificate(cert)
        #open( "container.pfx", 'w' ).write( p12.export() )
        p12dataStream=p12.export()

        response = HttpResponse(p12dataStream, content_type='application/x-pkcs12',status=201)
        response['Content-Disposition'] = 'attachment; filename="client_cert.p12"'
        #update cert_request to avoid duplicates being created
        #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!uncomment below!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        #cert_request.issued=True
        cert_request.save()



    return response
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号