'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'

@classmethod
def wrap(cls, public_key, algorithm):

    if ((not isinstance(public_key, byte_cls)) and (not isinstance(public_key, Asn1Value))):
        raise TypeError(unwrap(u'\n                                                                public_key    must    be    a    byte    string    or    Asn1Value,    not    %s\n                                                                ', type_name(public_key)))
    if (algorithm != u'rsa'):
        raise ValueError(unwrap(u'\n                                                                algorithm    must    "rsa",    not    %s\n                                                                ', repr(algorithm)))
    algo = PublicKeyAlgorithm()
    algo[u'algorithm'] = PublicKeyAlgorithmId(algorithm)
    algo[u'parameters'] = Null()
    container = cls()
    container[u'algorithm'] = algo
    if isinstance(public_key, Asn1Value):
        public_key = public_key.untag().dump()
    container[u'public_key'] = ParsableOctetBitString(public_key)
    return container
