docs: def _rsassa_pkcs1_v1_5_sign(self, M, h):
          """
          Implements RSASSA-PKCS1-v1_5-SIGN() function as described in
          Sect. 8.2.1 of RFC 3447.
  
          Input:
             M: message to be signed, an octet string
             h: hash function name (in 'md2', 'md4', 'md5', 'sha1', 'tls'
                  'sha256', 'sha384').
             
          Output:
             the signature, an octet string.
          """
          
          # 1) EMSA-PKCS1-v1_5 encoding
          k = self.modulusLen / 8
          EM = pkcs_emsa_pkcs1_v1_5_encode(M, k, h)
          if EM is None:
              warning("Key._rsassa_pkcs1_v1_5_sign(): unable to encode")
              return None
  
          # 2) RSA signature
          m = pkcs_os2ip(EM)                          # 2.a)
          s = self._rsasp1(m)                         # 2.b)
          S = pkcs_i2osp(s, k)                        # 2.c)
  
          return S