Download - 이번 시간에는
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - I이번 시간에는 ...
지난 시간까지 2 회차에 걸쳐 WMLScript 의 구성과 문법 , WMLScript 표준 Library 및 그 사용
예제와 WMLScript 로 구성하는 WAP 숫자 맞추기 데모 프로그램에 대해서 알아보았습니다 .
이번 시간에는 2 회차에 걸쳐 , WTAI 를 이용한 전화부가 서비스 개발에 대해서 학습해 보도록
하겠습니다 .
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - I학습 목표
19 회차 강의에서 다루게 되는 내용은 다음과 같습니다 .
1) WMLScript 보안 Library 에 대해 알 수 있다 .
2) WTAI Public Library 에 대해 알 수 있다 .
3) WTAI Voice Call Library 에 대해 알 수 있다 .
4) WTAI Network Message Library 에 대해 알 수 있다 .
이번 장의 학습 목표
WTAI 개발 - I
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWMLScript 보안 Library
WMLScript Crypto Library
• WAP 보안 기술
• WAP 보안은 네트워크 전송 망 보안이라 할 수 있는 WTLS (Wireless Transport Layer Security) 와 통신할 데이터 자체를 암호화하는 애플리케이션 레이어에서의 보안인 WALS (Wireless Application Layer Security), 그리고 WIM (WAP Identity Module) 으로 구분
• WALS ( 전자서명 ) 는 WML Script 에서 WMLScript Crypto 암호화 Library 를 사용
클라이언트
WMLScript FunctionWMLScript Function(Crypto.signText)(Crypto.signText)
구매신청서
서명용 비밀키
전자서명된 문서(WAP signed_content) WAP 게이트웨이
웹서버부인봉쇄
서명검증
WIM - 비밀키 보관 - 서명 계산
Signed data(PKCS#7 포맷 )
PKCS#7 : Cryptographic Message Syntax Std.
WMLScript Crypto Library 는 일반적으로 국가 보안 표준으로 채택된 인증 방식을 구현한 보안 업체 제공 보안 Library 이용
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWMLScript 보안 Library WMLScript Crypto Library
• WMLScript Cryptographic Library 함수
• WMLScript Crypto Library 는 signText() 함수를 제공하며 , signText() 는 사용자 입력 값 등 통신에 사용하는 데이터에 대한 암호화 기능 제공
• WMLScript Crypto Library 형식 : Crypto.signText( stringTosign, option, keyIDtype, keyID )
Parameter 설명
stringTosign 사용자 화면에 출력할 문자열
option
0x0000 – None– option 값이 0 일 경우 , 옵션 사용 안함
0x0001 – INCLUDE_CONTENT – option 값이 0x0001 일 경우 , 암호화할 데이터에 stringTosign
파라미터에 지정한 문자열을 포함해야 한다 .
0x0002 – INCLUDE_KEY_HASH– option 값이 0x0002 일 경우 , WAP 브라우저는 인증서 값에 상응하는
전자서명 HASH 키를 포함해야 한다 .
0x0004 – INCLUDE_CERTIFICATE – option 값이 0x0004 일 경우 , 전자 서명된 문서 또는 문서의 URL 을
포함해야 한다 .
keyIDtype
0 – NONE – KeyIDtype 사용 안함
1 – USER_KEY_HASH – WAP 단말 브라우저는 Custom 방식의 사용자 인증 전자서명 값을 SHA-
1 HASH 로 포함해야 한다 . WIM (PKCS#15) 적용 가능
2 – TRUSTED_KEY_HASH. – WAP 단말 브라우저는 사용이 공식화된 사용자 인증 전자 서명 값을 SH
A-1 HASH 로 포함해야 한다 . WIM (PKCS#15) 적용 가능
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWMLScript 보안 Library
WMLScript Crypto Library
• WMLScript Cryptographic Library 함수
• WMLScript Crypto Library 에서 데이터 암호화에 사용하는 SHA-1 전자 서명 HASH 데이터 암호화 방식 사용
• Crypto.signText(..) 함수 Return 값은 Base-64(RFC1521) 로 인코딩된 Signed 컨텐츠 Return
Parameter 설명
keyID사용자 keyIDtype 파라미터에서 설정한 값의 전자 서명 Key 지정 SHA-1 HASH 경우 , 20-byte 의 HASH 값을 가진다 .
• WMLScript Cryptographic Library 사용 예
var foo = Crypto.signText(
"Bill of Sale \n // stringTosign 파라미터 ------------------ \n3 Bolognese $18.00 \n1 Pepperoni $7.00 \n4 Lemonade $6.00 \n------------------ \nTotal Price $31.00",0, // option 파라미터 0=0x0000 1, // keyIDtype 파라미터 , 1= 서비스 자체사용 보안 Key
"\x37\x00\xB6\x96\x37\x75\xE3\x93\x48\x74\xD3\x98\x47\x53\x94\x34\x58\x97\xB5\xD6“); // keyIDtype=1 에 상응하는 20Byte HASH 보안 Key 값
var foo = Crypto.signText(
"Bill of Sale \n // stringTosign 파라미터 ------------------ \n3 Bolognese $18.00 \n1 Pepperoni $7.00 \n4 Lemonade $6.00 \n------------------ \nTotal Price $31.00",0, // option 파라미터 0=0x0000 1, // keyIDtype 파라미터 , 1= 서비스 자체사용 보안 Key
"\x37\x00\xB6\x96\x37\x75\xE3\x93\x48\x74\xD3\x98\x47\x53\x94\x34\x58\x97\xB5\xD6“); // keyIDtype=1 에 상응하는 20Byte HASH 보안 Key 값
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Library
• WTAI 는 Wireless Telephony Application Interface 의 약자로 , 전화 부가 기능 및 제어를 위한 WTA 서비스 구현을 위해 제공하는 WTA 용 API (Application Programming Interface) Set
• 전화 통신 제어를 위한 네트워크 WTAI 와 단말기 자체 전화 기능을 위한 Public WTAI 로 구성
• WTAI Library 의 사용은 WML 문서에서는 URI (Uniform Resource Identifier) 링크 방식 , WMLScript 에서는 WTAI Library 함수 호출 방식 사용
제공 함수 URI 설명
WTAVoiceCall - Voice Call 제어 Library
WTANetText - 이동통신망으로 통신하는 Text 데이터 제어 Library
WTAPhoneBook - 휴대폰 단말기의 전화번호부 제어 Library
WTACallLog -최근 수신 번호 , 최근 발신 번호 등 , 전화 통신 기록 제어 Library
WTAMisc “ms”WTAI 의 Logical Indicator 제어 Library Logical Indicator 는 Voice Incoming Call 인식 , Incoming Text (SMS) 인식 등에 사용
제공 함수 URI 설명
WTAPublic “wp” 단말기 전화 기능 제어 WTAI functions.
• WTAI Public Library 함수
• WTAI Network Library 함수
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Public Library
• WTAI Public Library 함수
기능 URI WMLScript Call
전화 걸기 기능 wtai://wp/mc WTAPublic.makeCall( number )
DTMF Tone 전송 기능 wtai://wp/sd WTAPublic.sendDTMF( DTMF )
새로운 전화번호 저장 기능 wtai://wp/apWTAPublic.addPBEntry( number, name )
• WTAI Public Library 함수 makeCall 사용 예
// 011-555-4637 로 전화걸기var flag = WTAPublic.makeCall(“0115554367");
// 011-555-4637 로 전화걸기var flag = WTAPublic.makeCall(“0115554367");
• WTAI Public Library 함수 실행 실패 Return 값 – 다음 값이 아닌 경우 , 전화 걸기 성공
• "-105" = 상대방 통화 중
• "-106" = 이동통신 망 사용 불가 (“ 연결할수없습니다” 메시지 출력 )
• "-107" = 상대방이 전화받지 않은 경우
• "-200" = 프로그램 오류
• "-1" = 그밖의 정의되지 않은 오류 발생
// 011-555-4637 로 전화걸기<go href="wtai://wp/mc;5554367!resultvar"/>
// 011-555-4637 로 전화걸기<go href="wtai://wp/mc;5554367!resultvar"/>
WMLScript 에서 Library Call 사용
WML 문서에서 URI 사용
Return 값은 resultvar 에 저장
Return 값은 flag 에 저장
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Public Library
• WTAI Public Library 함수 addPBEntry 사용 예
• 다음 예제에서 addPBEntry 의 return 값은 WMLScript 의 경우 , flag 에 , WML 문서의 경우 resultvar에 저장된다 . 전화번호 저장이 성공하면 Return 값은 “” 또는 실행 실패 시 Return 값 외의 값을 가진다 .
// 011-555-4637 전화번호를 김갑돌로 저장var flag = WTAPublic.addPBEntry(“0115554367", “김갑돌 ");
// 011-555-4637 전화번호를 김갑돌로 저장var flag = WTAPublic.addPBEntry(“0115554367", “김갑돌 ");
// 011-555-4637 전화번호를 김갑돌로 저장<go href="wtai://wp/ap;5554367;김갑돌 !resultvar"/>
// 011-555-4637 전화번호를 김갑돌로 저장<go href="wtai://wp/ap;5554367;김갑돌 !resultvar"/>
• WTAI Public Library 함수 실행 실패 Return 값
• "-100" = 저장할 이름 값이 너무 길거나 올바른 저장 이름이 아닌 경우
• "-102" = 저장할 전화번호가 너무 긴 경우
• "-103" = 단말기의 전화번호부 (Phonebook) 에 저장을 위한 정보 기록 작업 실패
• "-104" = 단말기의 전화번호부 (Phonebook) 용량 초과
• "-200" = 프로그램 오류
• "-1" = 그 밖의 정의되지 않은 오류 발생
WMLScript 에서 Library Call 사용
WML 문서에서 URI 사용
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Voice Call Library
• Voice Incoming Call State Model
• Voice Outgoing Call State Model
• WTAI Network Voice Call Library 함수는 걸려온 전화 (Incoming Call) 또는 전화 걸기 (Outgoing Call) 에 대한 Call 제어 기능 제공
• WTAI Network Library 사용을 위한 Incoming & Outgoing Call State 존재
Outgoing Call 은 6 개의 State 를 거치며
각 State 는 Event 에 의해 다음 State 로 전이
Incoming Call 전화를 받고 끊을 때까지 4 개 State 거치며
각 State 는 사용자 통화버튼 클릭과 같은 Event 에 의해
다음 Event 로 전이
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Voice Call Library
• WTAI Network Voice Call Library 는 URI 를 지원 하지 않으며 , 따라서 WML 문서에서 직접 호출하여 사용할 수 없고 , WMLScript 를 통해 사용해야 함
• Call Handle 객체 구성
• Call Handle 은 Number, Status, Mode, (Name, Duration) Field 를 가짐
• Number Field 는 Incoming 또는 Outgoing Call 전화 번호 저장
• Mode Field 는 true (Keep) 또는 false (Drop) 값을 가지며 , true 일 경우 , Call 계속 시도 , false 일 경우 , Call 종료 (Drop) 을 의미
• Name 은 ( 전화번호 ) Number 에 해당하는 ( 사람 , 장소 등 전화번호 ) 이름
• Status 는 , 1 = "call pending", 2 = "initiating call", 3 = "waiting for ringing“, 4 = "waiting for answer", 5 = "in call", 6 = "end" 상태
• Voice Call Handle
• 통화를 위한 각각의 Call 에 대한 제어를 위해 각각의 Call Handle 을 객체화 (Object) 하여 처리 걸려온 전화 , 전화 걸기 행위 등 Voice Call 관련 행위에 Handle 을 부여하여 , 각 Handle 을 조작할 수 있도록 하여 Voice Call 제어
Incoming Call
Outgoing Call
Outgoing Call
Call Handle 구성
• Number
• Status
• Mode
• Name, Duration
Call Object
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
• Voice Call Control 함수 (Cont’)
WTAI Call 기능
WTAVoiceCall.list( returnFirst )
Incoming 또는 Outgoing Call 을 제어하기 위한 Call 제어 Handle 값 반환returnFirst = boolean (true=return oldest call handle, false=return next oldest call handle)예 ) var h1 = WTAVoiceCall.list(true); // call #1 통화 var h2 = WTAVoiceCall.list(false); // call #2 통화 var h3 = WTAVoiceCall.list(false); // call #3 통화 var hA = WTAVoiceCall.list(true); // call #1 통화 var hB = WTAVoiceCall.list(false); // call #2 통화
WTAVoiceCall.setup( number, mode )
전화걸기 시작 , 전화 걸기 성공 시 Voice Call Handle 반환 , 실패시 invalid 반환 mode = boolean (false=drop, true=keep)예 ) var handle = WTAVoiceCall.setup(“025554367",true); 02-555-4367 로 전화 ( 성공까지 계속 ) 걸기
WTAVoiceCall.accept( callHandle, mode )
Incoming Call 수신예 ) var flag = WTAVoiceCall.accept(handle,false); WTAVoiceCall.list() 에서 반환받는 Call Handle 에 대해 전화 수신
WTAI Voice Call Library
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Call 기능
WTAVoiceCall.release( callHandle )
전화 통신 종료 (Release) 예 ) var flag = WTAVoiceCall.release(handle); WTAVoiceCall.list() 에서 반환받는 Call Handle 에 대해 전화 종료
WTAVoiceCall.sendDTMF( callHandle, DTMF )
DTMF 톤 전송DTMF 는 callHandle 에 전송할 , 전화 단말에 저장된 DTMF 톤 이름 string (tone_sequence)예 ) var flag = WTAVoiceCall.sendDTMF(handle,“Ta01"); Call Handle 에게 지정한 DTMF 톤 전송
WTAVoiceCall.callStatus( callHandle, field )
특정 Call 에 대한 Field 정보 추출field = 특정 Call Handle (callHandle) 에 대해 추출할 정보 Field 명 예 ) var name = WTAVoiceCall.callStatus(handle, "name"); Call Handle 에 대한 Call Field 정보 (name) 추출
• Voice Call Control 함수
WTAI Voice Call Library
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Network Messages Library
• WTAI Network Messages Library 는 이동통신망으로 SMS 단문 메시지 전송 및 제어를 지원하는 API 함수로 구성되며 , URI 를 지원 하지 않아 WML 문서에서 직접 호출하여 사용할 수 없다
• Voice Call Handle 과 마찬가지로 Sending & Receiving Network Message 에 대한 Handle 을 가진다 .
• Network Message Handle 객체 구성
• text Field : 네트워크 메시지 Body 를 구성하는 문자열
• tstamp Field : Incoming 메시지 도착 시간 String, Outgoing 메시지 경우 Null String 값
• address Field : Incoming 메시지의 경우 메시지 전송지 주소 (Originating Address), Outgoing 메시지는 메시지 도착지 주소 (Destination Address) String 포함
• read Field : true ( 메시지 읽음 ) 또는 false ( 메시지 읽지 않음 ) 값
• status Field : 1 = "unsent" state, 2 = "received" state, 3 = "end" state
• Incoming & Outgoing Network Message Model
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Network Messages Library
• Network Message Control 함수 (Cont’)
WTAI Call 기능
WTANetText.send( address, text )
•Network Message ( 문자메시지 ) 전송 , •address 파라미터는 전송할 전화번호 , text 는 전송 메시지 String 을
지정하며 , Return 값은 Network Message Handle 또는 오류 값 반환 :
• -100 = 문자 메시지 길이 초과 • -1 = 정의되지 않은 오류 발생
예 ) var handle = WTANetText.send(“025554567", "Hello!");
WTANetText.list ( returnFirst, messageType )
•Network Message Handle 값 반환 ,•returnFirst = boolean ( true=return oldest message handle, false=retur
n "next" message handle)•messageType 은 Control 할 메시지 종류 설정 파라미터 :
• 0 = 모든 read, unread and unsent 메시지 포함• 1 = unread 메시지만 포함• 2 = read 메시지만 포함• 3 = unsent 메시지만 포함
예 )var hi1 = WTANetText.list( true,0 ); // Any Message #1 반환 var hi2 = WTANetText.list( false,0 ); // Any message #2 반환 var hi3 = WTANetText.list(false,1); // Any message #3 반환 // returnFirst=false 가 선행 조건으로 , // 메시지 타입인 Second Parameter = Don't Care var ha1 = WTANetText.list(true,1); // unread message #1 반환 var ha2 = WTANetText.list(false,1); // unread message #2 반환
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - IWTAI 전화기능 Library
WTAI Network Messages Library
• Network Message Control 함수
WTAI Call 기능
WTANetText.remove ( msgHandle )
•Network Message ( 문자메시지 ) 삭제 •msgHandle = 삭제할 Message Handle, 오류 발생 시 다음 값 전송
• -101 = 메시지 삭제 실패• -1 = 정의되지 않은 오류 발생
예 ) var flag = WTANetText.remove(handle);
WTANetText.getFieldValue ( msgHandle, field )
•특정 Message 에 대한 Field 정보 추출 •msgHandle = Access 할 Message Handle, field = 추출할 Message Fi
eld 이름 예 ) var msg_addr = WTANetText.getFieldValue(handle, "address")
WTANetText.markAsRead ( msgHandle )
•특정 Message 의 상태를 읽은 메시지 (Read) 로 Set •msgHandle = Read 상태로 Set 할 Message Handle예 ) var flag = WTANetText.markAsRead(handle);
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - I요약 정리
1) WMLScript 의 보안 Library 에 대해 알아 보았습니다 .
2) 전화 받기 , 전화 걸기 기능을 제공하는 WTAI Public Library 에 대해
알아보았습니다 .
3) 다양한 전화 통신 제어를 위한 WTAI Voice Call Library 에 대해 알아 보았습니다 .
4) 문자 메시지 통신 제어를 위한 WTAI Network Message Library 에 대해 알아
보았습니다 .
이번 시간에 소개했던 내용을 정리해 봅시다 .
다음 시간에는 WTAI 개발 - II 에 대하여 학습하시게 될 것입니다 .
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - I평가 하기
문제 1 WMLScript 가 제공하는 보안 라이브러리는 무엇입니까 ?
정답은 다음과 같습니다 .
WMLScript Crypto Library
해설내용 : WMLScript Crypto Library 는 signText() 함수를 제공하며 , 사용자 입력 값 등 통신에 사용하는 데이터에 대한 암호화 기능을 제공하여 애플리케이션 수준의 보안 기능을 제공합니다 .
정답은 다음과 같습니다 .
WMLScript Crypto Library
해설내용 : WMLScript Crypto Library 는 signText() 함수를 제공하며 , 사용자 입력 값 등 통신에 사용하는 데이터에 대한 암호화 기능을 제공하여 애플리케이션 수준의 보안 기능을 제공합니다 .
문제 2 WTAI Public Library 가 제공하는 기능을 말해보시오
정답은 다음과 같습니다 .
전화 걸기 , 전화 받기 , DTMF 전송 기능
해설내용 : WTAI Public Library 에는 전화 걸기 함수 , 전화 받기 함수 및 DTMF 전송 기능 함수가 있어 , 기본적인 전화 통신을 위한 기능을 제공하며 , URI 및 라이브러리 함수를 제공하여 , WML 문서와 WMLScript 에서 모두 사용이 가능합니다 .
정답은 다음과 같습니다 .
전화 걸기 , 전화 받기 , DTMF 전송 기능
해설내용 : WTAI Public Library 에는 전화 걸기 함수 , 전화 받기 함수 및 DTMF 전송 기능 함수가 있어 , 기본적인 전화 통신을 위한 기능을 제공하며 , URI 및 라이브러리 함수를 제공하여 , WML 문서와 WMLScript 에서 모두 사용이 가능합니다 .
한국산업기술대학교 온라인 기술교육 교재 개발
차세대 모바일 디지털 컨텐츠
19. WTAI 개발 - I평가 하기
문제 3 Voice Call Handle 은 무엇입니까 ?
정답은 다음과 같습니다 .
Voice Call 을 객체화하여 각 Voice Call 을 구분할 수 있는 지정 값
해설내용 : WTAI 에서는 Voice Call 을 객체화하여 각 Voice Call 을 구분할 수 있는 값을 지정하는데 이를 Voice Call 핸들이라 합니다 . 따라서 Voice Call 핸들에는 전화번호 , 전화 스테이트 정보 , 이름 정보와 함께 , 전화 모드 정보가 포함됩니다 .
정답은 다음과 같습니다 .
Voice Call 을 객체화하여 각 Voice Call 을 구분할 수 있는 지정 값
해설내용 : WTAI 에서는 Voice Call 을 객체화하여 각 Voice Call 을 구분할 수 있는 값을 지정하는데 이를 Voice Call 핸들이라 합니다 . 따라서 Voice Call 핸들에는 전화번호 , 전화 스테이트 정보 , 이름 정보와 함께 , 전화 모드 정보가 포함됩니다 .