Exemplo n.º 1
0
    def parameters(self):
        """Return base64 encoded modulus and generator.

        @return: Tuple with modulus and generator
        @rtype: Tuple[six.text_type, six.text_type]
        """
        modulus = self.parameter_numbers.p
        generator = self.parameter_numbers.g
        return cryptutil.longToBase64(modulus), cryptutil.longToBase64(generator)
Exemplo n.º 2
0
    def parameters(self):
        """Return base64 encoded modulus and generator.

        @return: Tuple with modulus and generator
        @rtype: Tuple[six.text_type, six.text_type]
        """
        modulus = self.parameter_numbers.p
        generator = self.parameter_numbers.g
        return cryptutil.longToBase64(modulus), cryptutil.longToBase64(
            generator)
Exemplo n.º 3
0
    def getRequest(self):
        cpub = cryptutil.longToBase64(self.dh.public)

        args = {'openid.dh_consumer_public': cpub}

        if not self.dh.usingDefaultValues():
            args.update({
                'openid.dh_modulus': cryptutil.longToBase64(self.dh.modulus),
                'openid.dh_gen': cryptutil.longToBase64(self.dh.generator),
                })

        return args
Exemplo n.º 4
0
    def public_key(self):
        """Return base64 encoded public key.

        @rtype: six.text_type
        """
        return cryptutil.longToBase64(
            self.private_key.public_key().public_numbers().y)
Exemplo n.º 5
0
 def test_longToBase64(self):
     f = open(os.path.join(os.path.dirname(__file__), 'n2b64'))
     try:
         for line in f:
             parts = line.strip().split(' ')
             assert parts[0] == cryptutil.longToBase64(int(parts[1]))
     finally:
         f.close()
Exemplo n.º 6
0
def test_longToBase64():
    f = file(os.path.join(os.path.dirname(__file__), 'n2b64'))
    try:
        for line in f:
            parts = line.strip().split(' ')
            assert parts[0] == cryptutil.longToBase64(long(parts[1]))
    finally:
        f.close()
Exemplo n.º 7
0
 def test_associateDHModGen(self):
     # test dh with non-default but valid values for dh_modulus and dh_gen
     args = {
         'openid.mode': 'associate',
         'openid.session_type': 'DH-SHA1',
         'openid.dh_consumer_public': "Rzup9265tw==",
         'openid.dh_modulus': cryptutil.longToBase64(ALT_MODULUS),
         'openid.dh_gen': cryptutil.longToBase64(ALT_GEN) ,
         }
     r = self.decode(args)
     self.failUnless(isinstance(r, server.AssociateRequest))
     self.failUnlessEqual(r.mode, "associate")
     self.failUnlessEqual(r.session.session_type, "DH-SHA1")
     self.failUnlessEqual(r.assoc_type, "HMAC-SHA1")
     self.failUnlessEqual(r.session.dh.modulus, ALT_MODULUS)
     self.failUnlessEqual(r.session.dh.generator, ALT_GEN)
     self.failUnless(r.session.consumer_pubkey)
Exemplo n.º 8
0
    def xorSecret(self, composite, secret, hash_func):
        warnings.warn("Method 'xorSecret' is deprecated, use 'xor_secret' instead.", DeprecationWarning)
        dh_shared = self._get_shared_secret(cryptutil.longToBase64(composite))

        # The DH secret must be `btwoc` compatible.
        # See http://openid.net/specs/openid-authentication-2_0.html#rfc.section.8.2.3 for details.
        dh_shared = cryptutil.fix_btwoc(dh_shared)

        hashed_dh_shared = hash_func(dh_shared)
        return strxor(secret, hashed_dh_shared)
Exemplo n.º 9
0
def test_longToBase64():
    f = open(os.path.join(os.path.dirname(__file__), 'n2b64'))
    try:
        for line in f:
            parts = line.strip().split(' ')
            p0 = bytes(parts[0], encoding="utf-8")
            p1 = cryptutil.longToBase64(int(parts[1]))
            assert p0 == p1, (p0, p1, parts)
    finally:
        f.close()
Exemplo n.º 10
0
    def test_exchange_server_static(self):
        # Test key exchange - server part with static values
        server_dh = DiffieHellman.fromDefaults()
        self.setup_keys(server_dh, self.server_public_key,
                        self.server_private_key)

        self.assertEqual(
            server_dh.xorSecret(self.consumer_public_key, self.secret, sha256),
            self.mac_key)
        self.assertEqual(server_dh.public_key,
                         longToBase64(self.server_public_key))
Exemplo n.º 11
0
    def xorSecret(self, composite, secret, hash_func):
        warnings.warn(
            "Method 'xorSecret' is deprecated, use 'xor_secret' instead.",
            DeprecationWarning)
        dh_shared = self._get_shared_secret(cryptutil.longToBase64(composite))

        # The DH secret must be `btwoc` compatible.
        # See http://openid.net/specs/openid-authentication-2_0.html#rfc.section.8.2.3 for details.
        dh_shared = cryptutil.fix_btwoc(dh_shared)

        hashed_dh_shared = hash_func(dh_shared)
        return strxor(secret, hashed_dh_shared)
Exemplo n.º 12
0
    def public_key(self):
        """Return base64 encoded public key.

        @rtype: six.text_type
        """
        return cryptutil.longToBase64(self.private_key.public_key().public_numbers().y)
Exemplo n.º 13
0
 def answer(self, secret):
     mac_key = self.dh.xorSecret(self.consumer_pubkey, secret)
     return {
         'dh_server_public': cryptutil.longToBase64(self.dh.public),
         'enc_mac_key': oidutil.toBase64(mac_key),
         }
Exemplo n.º 14
0
 def answer(self, secret):
     mac_key = self.dh.xorSecret(self.consumer_pubkey, secret)
     return {
         'dh_server_public': cryptutil.longToBase64(self.dh.public),
         'enc_mac_key': oidutil.toBase64(mac_key),
     }
Exemplo n.º 15
0
 def test_public_key(self):
     dh = DiffieHellman.fromDefaults()
     self.setup_keys(dh, self.server_public_key, self.server_private_key)
     self.assertEqual(dh.public_key, longToBase64(self.server_public_key))