src/OpenSSL/crypto.py
def sign(pkey, data, digest):
    """
    Sign a data string using the given key and message digest.

    :param pkey: PKey to sign with
    :param data: data to be signed
    :param digest: message digest to use
    :return: signature

    .. versionadded:: 0.11
    """
    data = _text_to_bytes_and_warn("data", data)

    digest_obj = _lib.EVP_get_digestbyname(_byte_string(digest))
    if digest_obj == _ffi.NULL:
        raise ValueError("No such digest method")

    md_ctx = _lib.Cryptography_EVP_MD_CTX_new()
    md_ctx = _ffi.gc(md_ctx, _lib.Cryptography_EVP_MD_CTX_free)

    _lib.EVP_SignInit(md_ctx, digest_obj)
    _lib.EVP_SignUpdate(md_ctx, data, len(data))

    length = _lib.EVP_PKEY_size(pkey._pkey)
    _openssl_assert(length > 0)
    signature_buffer = _ffi.new("unsigned char[]", length)
    signature_length = _ffi.new("unsigned int *")
    final_result = _lib.EVP_SignFinal(
        md_ctx, signature_buffer, signature_length, pkey._pkey)
    _openssl_assert(final_result == 1)

    return _ffi.buffer(signature_buffer, signature_length[0])[:]
def sign(pkey, data, digest):
    data = _text_to_bytes_and_warn("data", data)

    digest_obj = _lib.EVP_get_digestbyname(_byte_string(digest))
    if digest_obj == _ffi.NULL:
        raise ValueError("No such digest method")

    md_ctx = _lib.Cryptography_EVP_MD_CTX_new()
    md_ctx = _ffi.gc(md_ctx, _lib.Cryptography_EVP_MD_CTX_free)

    _lib.EVP_SignInit(md_ctx, digest_obj)
    _lib.EVP_SignUpdate(md_ctx, data, len(data))

    length = _lib.EVP_PKEY_size(pkey._pkey)
    _openssl_assert(length > 0)
    signature_buffer = _ffi.new("unsigned char[]", length)
    signature_length = _ffi.new("unsigned int *")
    final_result = _lib.EVP_SignFinal(
        md_ctx, signature_buffer, signature_length, pkey._pkey)
    _openssl_assert(final_result == 1)

    return _ffi.buffer(signature_buffer, signature_length[0])[:]
def sign ( pkey , data , digest ) : data = _text_to_bytes_and_warn ( "data" , data ) digest_obj = _lib . EVP_get_digestbyname ( _byte_string ( digest ) ) if digest_obj == _ffi . NULL : raise ValueError ( "No such digest method" ) md_ctx = _lib . Cryptography_EVP_MD_CTX_new ( ) md_ctx = _ffi . gc ( md_ctx , _lib . Cryptography_EVP_MD_CTX_free ) _lib . EVP_SignInit ( md_ctx , digest_obj ) _lib . EVP_SignUpdate ( md_ctx , data , len ( data ) ) length = _lib . EVP_PKEY_size ( pkey . _pkey ) _openssl_assert ( length > 0 ) signature_buffer = _ffi . new ( "unsigned char[]" , length ) signature_length = _ffi . new ( "unsigned int *" ) final_result = _lib . EVP_SignFinal ( md_ctx , signature_buffer , signature_length , pkey . _pkey ) _openssl_assert ( final_result == 1 ) return _ffi . buffer ( signature_buffer , signature_length [ 0 ] ) [ : ]
Sign a data string using the given key and message digest.

    :param pkey: PKey to sign with
    :param data: data to be signed
    :param digest: message digest to use
    :return: signature

    .. versionadded:: 0.11
Sign a data string using the given key and message digest .