亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? emmencrypt.c

?? Sun公司Dream項目
?? C
字號:
/*
 * The contents of this file are subject to the terms
 * of the Common Development and Distribution License
 * (the "License").  You may not use this file except
 * in compliance with the License.
 *
 * You can obtain a copy of the license at
 * http://www.opensource.org/licenses/cddl1.php
 * See the License for the specific language governing
 * permissions and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL
 * HEADER in each file and include the License file at
 * http://www.opensource.org/licenses/cddl1.php.  If 
 * applicable, add the following below this CDDL HEADER, 
 * with the fields enclosed by brackets "[]" replaced 
 * with your own identifying information: 
 * Portions Copyright [yyyy]
 * [name of copyright owner]
 */ 

/*
 * $(@)EncryptEmm $Revision: 1.2 $ $Date: 2006/09/29 21:50:22 $
 * 
 * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved.
 */
 
/*
 * Encrypt an EMM using the RSA Public Key of the Client.
 * The EMM is an MPEG-2 Transport Packet with the EMM structure as specified in
 * the Dream-CAS specification.
 */

#include "mpeg2/Filter.h"
#include "dreamcas/Emm.h"
#include "ca_crypto/crypto.h"
#include "mpeg2/mpeg2ts_demux_stub.h"

#include <iostream>
#include <fstream>
#include <cerrno>
#include <stdexcept>

static std::string getEmmBytes( const char *inputFile );

// RSA encrypt the emm data and return the encrypted data
static std::string asymEncrypt( const char *rsaPublicKeyFilename, 
                                std::string& emmBytes );
                         
class EmmFilter : public mpeg2ts::Filter
{
public:
    virtual int process(mpeg2ts::Buffer tspayload );
    std::string getEmmBytes() const {return m_emmBytes;}
private:
	std::string m_emmBytes;
};
static void hexPrintBuf(char * message, unsigned char * buf, int len)
{
    int i = 0;
    printf("\n---------------------------------");
    printf("\n  %s   len = %d bytes   ", message, len);
    printf("\n---------------------------------\n");
    for ( i = 0; i < len; i ++ ) {
        if ( i != 0 && !(i % 10) ) {
            printf("\n");
        }
        printf("%2x ", buf[i]);
    }
    fflush(stdout);
}

int main( int argc, char *argv[] )
{

    if( argc != 4 ) {
        std::cout << "Usage: EmmEncrypt : <Input: EMM(in TS) file name>  "
            "<Input: Client RSA Public Key file name>  "
            "<Output: Encrypted file name>\n";
        return -1;
    }
    
    try {
	std::string rawEmm = getEmmBytes( argv[1] );
	
	hexPrintBuf( "emm_buf", (unsigned char*)rawEmm.c_str(), rawEmm.size() );
	
	std::string encryptedEmm = asymEncrypt( argv[2], rawEmm );
	
	
	std::cout << "Encrypted EMM size: " << encryptedEmm.size() << std::endl;
	
	PsiBytes emmBytes;
	
	dream::cas::CaMessageSection emmSection(0x82);
    
    m2t::OutputBitBuffer outb( emmBytes.data, sizeof(emmBytes.data) );
    emmSection.sectionLength = encryptedEmm.size();

    outb << emmSection;
    
    
	
	memcpy( emmBytes.data + outb.dataAvailable().first, encryptedEmm.c_str(),
	        encryptedEmm.size() );
	emmBytes.length = outb.dataAvailable().first + encryptedEmm.size();
	
	TsBytes tspkt = createTransportPacketForPsi( 600, //FIXME: hardcoded pid
	                                             1, emmBytes );
	                                                      
	// write encrypted emm to file
	
	std::fstream outfile( argv[3], std::ios::out|std::ios::binary );
	outfile.write( (char *)tspkt.data, sizeof(tspkt.data) );
	if( !outfile ) {
	    std::cout << "ERROR: Writing to " << argv[3] << " failed: "
	              << strerror(errno) << std::endl;
	    return -1;
	}
	    
	} catch ( std::runtime_error& e ) {
	    std::cout << "Exception: " << e.what() << std::endl;
	    return -1;
	}
	
    return 0;
}


std::string getEmmBytes( const char *inputFilename )
{
    std::fstream infile( inputFilename, std::ios::in | std::ios::binary );
    if( !infile )
    {
        std::cout << "ERROR opening \"" << inputFilename << "\": " 
            << std::strerror(errno) << std::endl;
        throw std::runtime_error("Could not open file");
    }
    
    mpeg2ts::TsFilter tsfilter;
    boost::shared_ptr<EmmFilter> emmFilter( new EmmFilter );
    
    tsfilter.setFilter( 600, // FIXME: hard-coded pid
                        emmFilter  );
    
    char tspkt[188];
    
    while( infile ){
       infile.read( tspkt, sizeof(tspkt) );
       if( infile.eof() )
           break;
       int ret = tsfilter.process( mpeg2ts::Buffer((unsigned char *)tspkt, 
                                                    infile.gcount() ) );
   }
        
    return emmFilter->getEmmBytes();
}

int EmmFilter::process(mpeg2ts::Buffer tspayload)
{
    mpeg2ts::InputBitBuffer emmBytes((const unsigned char *)tspayload.data+1, tspayload.len-1);
    dream::cas::EmmSection emmSection;
    
    emmBytes >> emmSection;
    
    std::cout << emmSection << std::endl;
    
    char outbuf[1024];
        
    mpeg2ts::OutputBitBuffer outbytes((unsigned char *) outbuf, sizeof(outbuf) );
        
    for( std::vector<dream::cas::Emm>::const_iterator it=emmSection.emms.begin();
                it!=emmSection.emms.end(); ++it )
        outbytes << (*it);
            
	m_emmBytes = std::string( (const char *)outbytes.data(), 
	                           outbytes.dataAvailable().first );
	
    return 0;
}

std::string asymEncrypt( const char *rsaPublicKeyFilename, 
                                std::string& emmBytes )
{
    unsigned char outbuf[1024];
    
    FILE *fpPublicKey = fopen( rsaPublicKeyFilename, "rb+" );
    if( fpPublicKey == NULL ) {
        std::cout << "ERROR opening Public Key File: " << strerror(errno) << std::endl;
        throw std::runtime_error("Could not open public key file");
    }
        
    unsigned char emmbuf[1024];
    memcpy( emmbuf, emmBytes.c_str(), emmBytes.size() );
            	hexPrintBuf( "out_buf", emmbuf, 35 );

    int outLen = asym_encrypt( fpPublicKey, (unsigned char *)emmbuf,
                               emmBytes.size(), outbuf );
        	hexPrintBuf( "out_buf", outbuf, outLen );

    fclose(fpPublicKey);
    
    if( outLen <=0 ) {
        std::cout << "ERROR: asymEncrypt(): asym_encrypt() failed\n";
        throw std::runtime_error("asym_encrypt() failed");
    }
    
    std::cout << "asymEncrypt: EMM len: " << emmBytes.size() << " outlen: " 
    << outLen << std::endl;
    
    return std::string((char *)outbuf, outLen);
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本aⅴ免费视频一区二区三区| 高清免费成人av| 国产一区二区三区四区五区美女| 国产suv一区二区三区88区| 色菇凉天天综合网| 日韩免费电影网站| 亚洲国产日韩一区二区| 国产ts人妖一区二区| 日韩一区二区免费在线电影 | 欧美亚洲动漫精品| 日本一区二区三区高清不卡| 婷婷一区二区三区| 色欲综合视频天天天| 国产三级精品视频| 精品一区二区三区在线播放| 欧美日本在线播放| 亚洲天堂福利av| 国产精品正在播放| 日韩欧美亚洲国产另类| 亚洲成av人片在线| 欧美日韩卡一卡二| 一区二区三区在线视频免费| 播五月开心婷婷综合| 九九国产精品视频| 91精品国产手机| 丝瓜av网站精品一区二区 | 国产一区二区三区美女| 91精品国产91久久久久久一区二区 | 欧美理论在线播放| 一区二区三区美女视频| 99r精品视频| 日韩美女精品在线| 91亚洲精品一区二区乱码| 国产日产欧产精品推荐色 | 日韩激情视频在线观看| 欧美视频完全免费看| 亚洲狠狠爱一区二区三区| 色综合网色综合| 欧美亚洲禁片免费| 亚洲一二三区视频在线观看| 在线看国产一区| 一区二区三区蜜桃网| 欧美日韩三级一区| 首页国产丝袜综合| 91精品福利在线一区二区三区| 日本人妖一区二区| 久久综合狠狠综合| 成人一级片网址| 亚洲欧洲精品天堂一级| 欧美亚洲国产一区在线观看网站| 午夜精品免费在线| 精品国产不卡一区二区三区| 国产91露脸合集magnet| 日韩美女啊v在线免费观看| 欧美性猛片aaaaaaa做受| 日韩电影一二三区| 日本一区二区三区dvd视频在线| 国产成人丝袜美腿| 亚洲欧美日韩在线播放| 欧美日本韩国一区| 国产精品77777| 亚洲第一主播视频| 久久久精品2019中文字幕之3| 91网站黄www| 蜜臀91精品一区二区三区 | 欧美精品一区二区三区高清aⅴ| 国产成人亚洲综合a∨婷婷| 亚洲激情六月丁香| 日韩欧美在线综合网| 成人激情开心网| 图片区小说区国产精品视频| 久久综合色综合88| 欧美视频在线一区二区三区| 精品一区二区三区欧美| 亚洲免费伊人电影| www久久精品| 欧美日韩中字一区| 成人av在线资源网| 狠狠网亚洲精品| 一级做a爱片久久| 久久精子c满五个校花| 欧美在线观看一二区| 国产福利一区在线| 视频在线观看一区二区三区| 国产精品免费丝袜| 精品久久久网站| 欧美卡1卡2卡| 色一情一乱一乱一91av| 国产久卡久卡久卡久卡视频精品| 亚洲一区二区三区四区中文字幕| 国产欧美日本一区二区三区| 欧美日本在线视频| 色屁屁一区二区| 成人午夜激情影院| 国产综合久久久久久鬼色| 亚洲图片欧美视频| 亚洲精品成人a在线观看| 中文字幕av资源一区| 日韩视频国产视频| 正在播放一区二区| 欧美日韩综合一区| 欧美亚洲免费在线一区| 94色蜜桃网一区二区三区| 国产成人av电影| 美国av一区二区| 奇米在线7777在线精品| 香蕉加勒比综合久久| 亚洲国产精品久久一线不卡| 亚洲欧美另类在线| 中文字幕一区二区三区精华液| 国产精品久久久久久福利一牛影视 | 亚洲素人一区二区| 国产日韩精品一区二区三区在线| 精品国产一区二区精华| 日韩欧美国产高清| 日韩欧美高清dvd碟片| 欧美一区中文字幕| 日韩午夜av电影| 精品久久99ma| 精品精品国产高清a毛片牛牛 | 欧美亚洲综合在线| 在线观看视频91| 精品视频资源站| 91精品国产综合久久精品图片| 欧美另类久久久品| 精品福利一区二区三区| 国产亚洲福利社区一区| 国产欧美日韩在线观看| 国产精品二区一区二区aⅴ污介绍| 中文字幕精品综合| 亚洲综合激情小说| 午夜视频一区二区| 精品在线免费观看| 成人三级伦理片| 色综合久久六月婷婷中文字幕| 91国偷自产一区二区开放时间| 色8久久精品久久久久久蜜| 欧美色图片你懂的| 日韩精品一区二区三区视频在线观看| 久久色成人在线| 综合色中文字幕| 亚洲国产色一区| 精品一区二区av| 91网站黄www| 精品国产三级电影在线观看| 久久久99久久| 亚洲午夜激情av| 亚洲va韩国va欧美va精品| 久久99国产精品尤物| 91小视频免费观看| 精品国产免费一区二区三区四区 | 国产欧美日韩卡一| 亚洲一区二区三区四区在线观看 | 在线免费观看不卡av| 欧美一区二区三区视频免费播放 | 成人丝袜18视频在线观看| 欧美日韩一区二区在线视频| 久久众筹精品私拍模特| 一区二区三区在线免费| 久草中文综合在线| 欧美日韩亚洲综合在线| 国产校园另类小说区| 日韩电影在线一区二区三区| 成人激情午夜影院| 精品噜噜噜噜久久久久久久久试看 | 欧美日韩三级一区| 国产精品你懂的在线欣赏| 亚洲色大成网站www久久九九| 麻豆国产精品官网| 欧美丝袜丝交足nylons图片| 国产亚洲精品免费| 老司机免费视频一区二区三区| 在线视频你懂得一区| 久久久www成人免费无遮挡大片| 亚洲综合色自拍一区| 99热精品一区二区| 久久午夜色播影院免费高清| 日韩成人免费看| 欧美日韩亚洲不卡| 亚洲精品乱码久久久久久| 国产不卡视频一区| 久久亚洲一区二区三区明星换脸| 午夜在线电影亚洲一区| 91丨九色丨蝌蚪富婆spa| 精品国产一区二区在线观看| 免费成人深夜小野草| 欧美日韩国产另类一区| 一区二区高清免费观看影视大全 | 韩国女主播成人在线观看| 欧美喷潮久久久xxxxx| 亚洲va韩国va欧美va精品| 日本高清无吗v一区| 亚洲欧洲三级电影| 国产91精品欧美| 国产欧美精品一区二区三区四区| 裸体歌舞表演一区二区| 精品国内片67194| 激情都市一区二区| 欧美sm美女调教| 久久国产视频网|