nl_tokens: Return a new keyczar containing the public part of key which must be an asymmetric key .
pl_tokens: function _exportPublicKey ( key ) { var t = key . metadata . type ; var p = key . metadata . purpose ; if ( ! ( t == keyczar . TYPE_RSA_PRIVATE && ( p == keyczar . PURPOSE_DECRYPT_ENCRYPT || p == keyczar . PURPOSE_SIGN_VERIFY ) ) ) { throw new Error ( 'Unsupported key type/purpose:' + t + '/' + p ) ; } var publicPurpose = keyczar . PURPOSE_ENCRYPT ; if ( p == keyczar . PURPOSE_SIGN_VERIFY ) { publicPurpose = keyczar . PURPOSE_VERIFY ; } var metadata = { name : key . metadata . name , purpose : publicPurpose , <mask> : keyczar . TYPE_RSA_PUBLIC , encrypted : false , // TODO: Probably should do a deep copy versions : key . metadata . versions } ; if ( key . metadata . versions . length != 1 ) { throw new Error ( 'TODO: Support key sets with multiple keys' ) ; } var primaryVersion = _getPrimaryVersion ( key . metadata ) ; var data = { meta : JSON . stringify ( metadata ) } ; data [ String ( primaryVersion ) ] = key . primary . exportPublicKeyJson ( ) ; return _makeKeyczar ( data ) ; }