code: def wrap(cls, public_key, algorithm):
          
  
          if not isinstance(public_key, byte_cls) and not isinstance(public_key, Asn1Value):
              raise TypeError(unwrap(
                  '''
                  public_key must be a byte string or Asn1Value, not %s
                  ''',
                  type_name(public_key)
              ))
  
          if algorithm != 'rsa':
              raise ValueError(unwrap(
                  '''
                  algorithm must "rsa", not %s
                  ''',
                  repr(algorithm)
              ))
  
          algo = PublicKeyAlgorithm()
          algo['algorithm'] = PublicKeyAlgorithmId(algorithm)
          algo['parameters'] = Null()
  
          container = cls()
          container['algorithm'] = algo
          if isinstance(public_key, Asn1Value):
              public_key = public_key.untag().dump()
          container['public_key'] = ParsableOctetBitString(public_key)
  
          return container
docs: Wraps a public key in a PublicKeyInfo structure
  
          :param public_key:
              A byte string or Asn1Value object of the public key
  
          :param algorithm:
              A unicode string of "rsa"
  
          :return:
              A PublicKeyInfo object