예제 #1
0
파일: core.py 프로젝트: iychoi/syndicate
def ft_syndicate_principal():
   """
   Functional tests for creating, reading, and deleting SyndicatePrincipals.
   """
   
   c_syndicate.crypto_init()
   
   print "generating key pair"
   pubkey_pem, privkey_pem = api.generate_key_pair( 4096 )
   
   user_email = "*****@*****.**"
   
   print "saving principal"
   
   key = generate_symmetric_secret()
   
   put_sealed_principal_data( user_email, key, pubkey_pem, privkey_pem )
   
   print "fetching principal private key"
   saved_privkey_pem = get_principal_pkey( user_email, key )
   
   assert saved_privkey_pem is not None, "Could not fetch saved private key"
   assert saved_privkey_pem == privkey_pem, "Saved private key does not match actual private key"
   
   print "delete principal"
   
   observer_storage.delete_principal_data( user_email )
   
   print "make sure its deleted..."
   
   saved_privkey_pem = get_principal_pkey( user_email, key )
   
   assert saved_privkey_pem is None, "Principal key not deleted"
   
   c_syndicate.crypto_shutdown()
예제 #2
0
def ft_seal_and_unseal():
    """
    Functional test for sealing/unsealing data
    """
    import syndicate.observer.core as observer_core
    
    c_syndicate.crypto_init()
    
    print "generating key pair"
    pubkey_pem, privkey_pem = api.generate_key_pair( 4096 )
    
    key = observer_core.generate_symmetric_secret()
    
    sealed_buf = create_sealed_and_signed_blob( privkey_pem, key, "hello world")
    print "sealed data is:\n\n%s\n\n" % sealed_buf

    buf = verify_and_unseal_blob( pubkey_pem, key, sealed_buf )
    print "unsealed data is: \n\n%s\n\n" % buf
    
    c_syndicate.crypto_shutdown()
예제 #3
0
def ft_seal_and_unseal():
    """
    Functional test for sealing/unsealing data
    """
    import syndicate.observer.core as observer_core

    c_syndicate.crypto_init()

    print "generating key pair"
    pubkey_pem, privkey_pem = api.generate_key_pair(4096)

    key = observer_core.generate_symmetric_secret()

    sealed_buf = create_sealed_and_signed_blob(privkey_pem, key, "hello world")
    print "sealed data is:\n\n%s\n\n" % sealed_buf

    buf = verify_and_unseal_blob(pubkey_pem, key, sealed_buf)
    print "unsealed data is: \n\n%s\n\n" % buf

    c_syndicate.crypto_shutdown()
예제 #4
0
            return None     # user already existed

    if new_user is None:
        # the method itself failed
        raise Exception("Creating %s failed" % user_email)

    else:
        # activate the user.
        # first, generate a keypair, if one was not given
        pubkey_pem = None 
        privkey_pem = None
        generated_keys = False
        
        if 'private_key' not in user_kw.keys():
            log.info("Generating %s-bit key pair for %s" % (msconfig.OBJECT_KEY_SIZE, user_email))
            pubkey_pem, privkey_pem = api.generate_key_pair( msconfig.OBJECT_KEY_SIZE )
            generated_keys = True
        
        else:
            privkey_pem = user_kw['private_key']
            
            try:
               pubkey_pem = CryptoKey.importKey( observer_pkey_pem ).publickey().exportKey()
            except Exception, e:
               logger.error("Malformed private key")
               raise e
               
        # then, activate the account with the keypair
        try:
            activate_rc = client.register_account( user_email, user_activate_pw, public_key=pubkey_pem )
        except Exception, e: