imported from https://bitbucket.org/ustraca/crypto
imported from https://bitbucket.org/ustraca/crypto